1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27
// { dg-do assemble } template<class T> struct A { typedef T T1; }; template<class T> struct B { typedef T T2; }; template<class T> struct C { }; template<class E> C<typename E::T2::T1> foo (E) { return C<typename E::T2::T1>(); } void test() { foo(B<A<int> >()); }