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