// Contributed by Dodji Seketeli <dodji@redhat.com>
// 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;
}