1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
class A {}; template <class T> struct B { typedef A E; }; template <class T> struct C { typedef B<T> D; typedef typename D::E E; void f() throw(E); };