* decl.c (make_typename_type): s/parameters/arguments/.
[official-gcc.git] / gcc / testsuite / g++.dg / cpp0x / implicit7.C
blobeaa7d82ae520226a015543d720b15fe70504fb56
1 // PR c++/44909
2 // { dg-do compile { target c++11 } }
3 // Declaring A<D<E>>'s copy ctor means choosing a ctor to initialize D<E>,
4 // which means choosing a ctor for C<B<E>>, which meant considering
5 // C(const B<E>&) which means choosing a ctor for B<E>, which means choosing
6 // a ctor for A<D<E>>.  Cycle.
8 template<typename T>
9 struct A
11   T t;
14 template <typename T>
15 struct B
17   typename T::U u;
20 template <typename T>
21 struct C
23   C(const T&);
26 template <typename T>
27 struct D
29   C<B<T> > v;
32 struct E {
33   typedef A<D<E> > U;
36 extern A<D<E> > a;
37 A<D<E> > a2(a);