Since gcc 3.4.0 I get an error message which is not very helpful for the following invalid code snippet:
================================ struct A { int operator[] (size_t); }; struct B { int foo(size_t); }; ================================ err.cc:3: error: declaration of `operator[]' as non-function err.cc:3: error: expected `;' before '(' token err.cc:8: error: expected `;' before '(' token With gcc 3.3.5 and before I get: err.cc:3: error: `size_t' was not declared in this scope err.cc:3: error: invalid data member initialization err.cc:3: error: (use `=' to initialize static data members) err.cc:3: error: declaration of `operator[]' as non-function err.cc:8: error: `size_t' was not declared in this scope err.cc:8: error: invalid data member initialization which says what's wrong: `size_t' was not declared in this scope. -- Summary: [3.4/4.0 regression] Misleading diagnostic for invalid function decalrations Product: gcc Version: 4.0.0 Status: UNCONFIRMED Keywords: diagnostic Severity: normal Priority: P2 Component: c++ AssignedTo: unassigned at gcc dot gnu dot org ReportedBy: reichelt at gcc dot gnu dot org CC: gcc-bugs at gcc dot gnu dot org http://gcc.gnu.org/bugzilla/show_bug.cgi?id=17851