1 // Contributed by Dodji Seketeli <dodji@redhat.com>
2 // { dg-do compile }
3 
4 template<class T>
5 struct C
6 {
7 };
8 
9 template<class T,
10 	 template<class TT_T0, template<class TT_T1> class TT_TT> class TT,
11 	 class U = TT<int, C> >
12 struct S
13 {
14   void foo(TT<T, C>);
15 };
16 
17 template<class T,
18 	 template<class TT_T0, template<class TT_T1> class TT_TT> class TT,
19 	 class U>
20 void
foo(TT<T,C>)21 S<T, TT, U>::foo(TT<T, C>)
22 {
23 }
24