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