/* { dg-lto-do link } */ /* { dg-extra-ld-options "-r -nostdlib" } */ struct NullType {}; template struct TList { typedef T Head; typedef U Tail; }; template struct TListLength {}; template struct TListLength > { enum { Ret = 1 + TListLength::Ret }; }; template <> struct TListLength { enum { Ret = 0 }; }; template class DDQMC { public: int* moves[TListLength::Ret]; inline DDQMC(); private: }; template DDQMC::DDQMC() { } int main() { typedef DDQMC< TList > > mytype; }