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