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