1 // Contributed by Dodji Seketeli <dodji@redhat.com> 2 // Origin PR c++/39754 3 // { dg-do compile } 4 5 struct Foo {}; 6 template<typename> struct A ; 7 template<typename T ,typename = A<T> > struct B { } ; 8 9 template<class W, class> 10 struct D 11 { 12 typedef W X; 13 A<void (Foo::*) (X)> a; 14 } ; 15 16 template<class Y> 17 struct E 18 { 19 B<void (Foo::*) (Y)> b; 20 }; 21 E < int > e ; 22 23