// { dg-do assemble  }

enum E { e };

template <const E* ep>
struct S1
{
  static char* s;
};

template <int D>
struct S2 {};

template <>
struct S2<1>
{
  static E es[1];
};

struct S3
{
  typedef S1<S2<1>::es> S3_Type;
};

E S2<1>::es[1] = {e};

template <>
char* S1<S2<1>::es>::s = "abc";
