typedef int A; struct foo{ A A; }; compiles in 3.4.0 and on Comeau, but on 3.4.2 you get: changedMeaning.cc:3: error: declaration of `A foo::A' changedMeaning.cc:1: error: changes meaning of `A' from `typedef int A' So who's right, you or EDG? Ivan
GCC is. See PR 17353 and [basic.scope.class] of the standard. *** This bug has been marked as a duplicate of 17353 ***
Subject: Re: New: Fails valid? (valid according to Comeau anyway) "igodard at pacbell dot net" <gcc-bugzilla@gcc.gnu.org> writes: | typedef int A; | struct foo{ | A A; | }; | | compiles in 3.4.0 and on Comeau, but on 3.4.2 you get: The code is ill-formed; no diagnostic required. GCC-3.x, x < 4 used to issue a diagnostic as a QoI. A regression was introduced in 3.4.0, and fixed later. | changedMeaning.cc:3: error: declaration of `A foo::A' | changedMeaning.cc:1: error: changes meaning of `A' from `typedef int A' | | So who's right, you or EDG? Both, but we're better ;-) -- Gaby