// { dg-do run } template< int i > struct T : public T< i-1 > { }; template<> struct T< 0 > { }; template< class F > struct T1 : public T< F::dim > { }; template< int i > struct S { enum { dim = i } ; }; int main() { T1< S< 4 > > t ; return( 0 ) ; }