// { dg-do compile } // Origin: priesnit@math.uni-goettingen.de // PR c++/5767: ICE parsing typename with invalid scope. template <template <typename> class TP> struct A { template <typename T> struct Template { typedef typename TP<T>::Type Type; }; }; template <template <typename> class TP> struct B { template <typename T> struct Template { typedef typename A<A<TP>::Template> // { dg-error "mismatch|class template" } ::template Template<T>::Type Type; // { dg-error "" } }; }; template <typename T> struct C { typedef void Type; }; int main() { typedef B<C>::Template<void>::Type Type; // { dg-error "does not name a type" } }