1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28
// Build don't link: 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";