1 // { dg-do compile } 2 3 // Origin: priesnit@math.uni-goettingen.de 4 5 // PR c++/5767: ICE parsing typename with invalid scope. 6 7 template <template <typename> class TP> 8 struct A 9 { 10 template <typename T> 11 struct Template 12 { 13 typedef typename TP<T>::Type Type; 14 }; 15 }; 16 template <template <typename> class TP> 17 struct B 18 { 19 template <typename T> 20 struct Template 21 { 22 typedef typename A<A<TP>::Template> // { dg-error "mismatch|class template" } 23 ::template Template<T>::Type Type; // { dg-error "" } 24 }; 25 }; 26 template <typename T> 27 struct C 28 { 29 typedef void Type; 30 }; main()31int main() 32 { 33 typedef B<C>::Template<void>::Type Type; // { dg-error "does not name a type" } 34 } 35