1// Contributed by Dodji Seketeli <dodji@redhat.com> 2// { dg-do compile } 3 4template<class T> 5struct C 6{ 7 void bar(); 8}; 9 10template<class T> 11void 12C<T>::bar() 13{ 14} 15 16 17template<class U, 18 template<class TT0_T0> class TT0 = C, 19 template<class TT1_T0> class TT1 = TT0> 20struct S 21{ 22 C<U> s; 23 24 void foo(TT1<U>); 25 26 void bar() 27 { 28 foo(s); 29 } 30}; 31 32template<class T, 33 template<class TT0_T0> class TT0, 34 template<class TT1_T0> class TT1> 35void 36S<T, TT0, TT1>::foo(TT1<T>) 37{ 38 C<T> c; 39} 40