1 template<typename T>
2 struct A {
3   template<typename L> struct SubA { };
4 
fA5   template<typename T1,typename L> void f(T1 & t1, SubA<L> & t2) { }
gA6   template<typename U> void g(SubA<U> & suba) { }
hA7   template<typename U> void h(SubA<U> & suba) { }
8 };
9 
main(void)10 int main(void) {
11   int i;
12   A<int> a;
13   A<int>::SubA<int> suba;
14 
15   a.f(i,suba);
16   a.g(suba);
17   a.h(suba);
18 }
19 
20