/* 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 struct S ; template <> struct S { template struct R; template struct R { }; typedef int X; };