// PR c++/44909
// { dg-do compile { target c++11 } }
// Declaring A<D<E>>'s copy ctor means choosing a ctor to initialize D<E>,
// which means choosing a ctor for C<B<E>>, which meant considering
// C(const B<E>&) which means choosing a ctor for B<E>, which means choosing
// a ctor for A<D<E>>.  Cycle.

template<typename T>
struct A
{
  T t;
};

template <typename T>
struct B
{
  typename T::U u;
};

template <typename T>
struct C
{
  C(const T&);
};

template <typename T>
struct D
{
  C<B<T> > v;
};

struct E {
  typedef A<D<E> > U;
};

extern A<D<E> > a;
A<D<E> > a2(a);
