// Contributed by Dodji Seketeli // Origin: PR c++/41785 // { dg-do compile { target c++11 } } struct a {}; template < typename T, typename ENCLOSING > struct base; template < typename... T > struct derived : public base< T, derived< T... > >... {}; template < typename... T> struct base< a, derived< T... > > { typedef derived< T... > Derived; }; int main() { derived< a > instance; }