1 /* PR c++/4633 */ 2 /* { dg-do compile } */ 3 4 // The 'class X' inside the template used to escape (somehow), 5 // so that the typedef claimed that it was redefining X. 6 7 template <typename T> struct S ; 8 9 template <> struct S<float> 10 { 11 template <class, class> struct R; 12 template <class X> struct R<X, X> { }; 13 14 typedef int X; 15 }; 16