/* PR c++/4633 */ /* { dg-do compile } */ // The 'class X' inside the template used to escape (somehow), // so that the typedef claimed that it was redefining X. template <typename T> struct S ; template <> struct S<float> { template <class, class> struct R; template <class X> struct R<X, X> { }; typedef int X; };