// Copyright (C) 2001 Free Software Foundation // Contributed by Kriang Lerdsuwanakij <lerdsuwa@users.sourceforge.net> template <class U> struct A { template <class V> struct AA { template <class T> struct B { int i; B() : i(1) {} }; }; }; template <template <class> class TT> struct X { TT<int> y; }; template <class T, class U> struct C { X<T::template AA<U>::template B> x; }; int main() { C<A<char>, int> c; }