According to the iso 14882:1998 5.2.5 Class member access, the following code:
class X { public: enum enumX { a=100 }; }; int main(void) { X x; (void) &x.a; // should not compile return 1; } should not compile, but with the following version of g++: g++ -v Using built-in specs. Target: x86_64-unknown-linux-gnu Configured with: ../configure --enable-threads=posix --prefix=/prj/dsp/qdsp6_aus/users/slarin/x86_gcc_4.4/bin --enable-languages=c,c++ --disable-checking Thread model: posix gcc version 4.4.0 (GCC) ... it does. Also failing in 4.3.2. In 3.3.3 and 3.4.6 for example it correctly reports the following: g++ reduced.c reduced.c: In function `int main()': reduced.c:11: error: non-lvalue in unary `&' Thank you. -- Summary: non-lvalue in unary `&' wrongly accepted Product: gcc Version: 4.4.0 Status: UNCONFIRMED Severity: normal Priority: P3 Component: c++ AssignedTo: unassigned at gcc dot gnu dot org ReportedBy: sergei_lus at yahoo dot com http://gcc.gnu.org/bugzilla/show_bug.cgi?id=41131