1 // PR c++/60182 2 // { dg-require-effective-target c++11 } 3 4 class B {}; 5 template <typename> using __allocator_base = B; 6 template <typename> class F : __allocator_base<int> {}; 7 class C {}; 8 template <typename, typename = F<int> > class G : C {}; 9 template <typename> class D; 10 class A { 11 using Container = G<D<char>>; 12 A(); 13 A(D<char> const &); 14 Container m_elements; 15 }; 16 template <template <class, class> class C, class A = F<D<int>>> 17 void doSomething(C<D<char>, A> &); A(D<char> const &)18A::A(D<char> const &) : A() { doSomething(m_elements); } 19