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