| // { dg-do run } | |
| template <class T> struct A { | |
| template <class U> struct B { | |
| template <class V> static void f () { } | |
| void g () { } | |
| }; | |
| }; | |
| template <class T, class U> | |
| void f () | |
| { | |
| A<T>::template B<U>::template f<T> (); | |
| typename A<T>::template B<U> b; | |
| typename A<T>::template B<U> b2; | |
| b.A<T>::template B<U>::~B(); | |
| } | |
| template <class T> struct C: public A<T>::template B<T> { }; | |
| int main () | |
| { | |
| f<int, char>(); | |
| } |