// { dg-do assemble } // { dg-options "" } // Origin: philippeb@videotron.ca #include <iostream> using namespace std; template <class T> struct traits { typedef long next; }; template <class T> struct c1 { template <class U> struct c2 { c2() { cout << __PRETTY_FUNCTION__ << endl; } }; }; template <class T> void foo() { cout << __PRETTY_FUNCTION__ << endl; typename c1<typename traits<T>::next>::template c2<void>(); } int main() { foo<int>(); }