The following test case fails to compile with all compiler from 4.x series. (I didn't check with any earlier version.) Comeaue's test drive compiler does not complain.
Changing the declaration of "a" in "struct b" into "struct a a;" makes it compile. 8<---8<---8<---8<--- struct a { }; struct b { a a; }; 8<---8<---8<---8<--- The error: ville.cxx:5: error: declaration of 'a b::a' ville.cxx:1: error: changes meaning of 'a' from 'struct a' -- Summary: C++ name space issue Product: gcc Version: 4.1.0 Status: UNCONFIRMED Severity: normal Priority: P3 Component: c++ AssignedTo: unassigned at gcc dot gnu dot org ReportedBy: v dot haisman at sh dot cvut dot cz GCC build triplet: *-*-* GCC host triplet: *-*-* GCC target triplet: *-*-* http://gcc.gnu.org/bugzilla/show_bug.cgi?id=26940