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 &)18 A::A(D<char> const &) : A() { doSomething(m_elements); }
19