1template<typename T>
2struct A {
3  template<typename L> struct SubA { };
4
5  template<typename T1,typename L> void f(T1 & t1, SubA<L> & t2) { }
6  template<typename U> void g(SubA<U> & suba) { }
7  template<typename U> void h(SubA<U> & suba) { }
8};
9
10int 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