Consider the following code sample: struct A { }; typedef struct A A; struct A a; // [1]
struct wrapper { struct B { }; typedef struct B B; struct B b; // [2] }; Mainline gives an error for line [2], but not for line [1]. My reading of the standard is that there shouldn't be any difference. In both cases we're using an elaborated type specifier with a name that resolves to a typedef-name. A program that does that is ill formed, so the compiler is required to admit a diagnostic. We're doing that for line [2], but we're failing to do it for line [1]. Relevant passages in the standard: 3.4.4/2, 7.1.3/4, 7.1.5.3/2. -- Summary: Missing diagnostic for typedef name in elaborated type specifier Product: gcc Version: 4.0.0 Status: UNCONFIRMED Severity: normal Priority: P2 Component: c++ AssignedTo: unassigned at gcc dot gnu dot org ReportedBy: austern at apple dot com CC: gcc-bugs at gcc dot gnu dot org GCC build triplet: powerpc-apple-darwin7.7.0 GCC host triplet: powerpc-apple-darwin7.7.0 GCC target triplet: powerpc-apple-darwin7.7.0 http://gcc.gnu.org/bugzilla/show_bug.cgi?id=19538