1 template <typename T> struct A 2 { 3 typedef int X; 4 }; 5 6 template <typename T> struct B 7 { 8 typename A<T>::X x; 9 }; 10 11 template <typename T> struct C 12 { 13 void foo(int); 14 B<A<T>*> b; 15 }; 16 17 template <typename T> struct D 18 { 19 enum { e }; barD20 void bar() { C<T*>::foo(e); } 21 }; 22