1template <typename T> struct A {
2    template<typename S> struct B { typedef A<S> X; };
3
4};
5
6template<typename> void f() {
7    typedef A<int>::B<double>::X X;
8}
9
10template void f<int> ();
11