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