http://gcc.gnu.org/bugzilla/show_bug.cgi?id=55338
Bug #: 55338 Summary: Incorrectly reported error in type name hiding Classification: Unclassified Product: gcc Version: 4.7.1 Status: UNCONFIRMED Severity: normal Priority: P3 Component: c++ AssignedTo: unassig...@gcc.gnu.org ReportedBy: piotr.wyder...@gmail.com The following snippet: class A {}; class B : public A { typedef A super; public: class X {}; }; class C : public B { typedef B super; class X : public super::X { typedef super::X super; }; }; compiles without a warning on Comeau and MSVC, but GCC (4.6.1 and 4.7.1) failes with the following message: $ gcc -c bug.cpp bug.cpp:18:24: error: declaration of ‘typedef class B::X C::X::super’ [-fpermissive] bug.cpp:14:14: error: changes meaning of ‘super’ from ‘typedef class B C::super’ [-fpermissive] To my understanding of the Standard Comeau is right and GCC is wrong here.