I'm getting user reports of problems compiling constructs like the following on 3.4.2. I develop on 3.4.0 which is happy with it.
class foo { const foo* foo; }; My understanding of the standard was that the new name in a declaration comes into scope at the position of the identifier, so there is no ambiguity in the two uses of "foo" in the pointer member declaration. This seems to be what 3.4.0 does. Users report messages like: /home/art/dev/ootbc/common/include/powerset.hh:289: error: declaration of `const powerset<E, alloc>*powerset<E, alloc>::iterator::powerset' /home/art/dev/ootbc/common/include/powerset.hh:134: error: changes meaning of `powerset' from `class powerset<E, alloc>' for similar constructs in 3.4.2. I tried this on Comeau, and it may gave broken their compiler: the online system reports "compilation failed" but does *not* produce an actual error message. Does this reflect a bug in 3.4.2 or a fix of 3.4.0? Ivan -- Summary: version drift 3.4.0->3.4.2? Product: gcc Version: 3.4.0 Status: UNCONFIRMED Severity: normal Priority: P2 Component: c++ AssignedTo: unassigned at gcc dot gnu dot org ReportedBy: igodard at pacbell dot net CC: gcc-bugs at gcc dot gnu dot org http://gcc.gnu.org/bugzilla/show_bug.cgi?id=18320