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