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.
Confirmed, note I found another bug in that we now produce a werid quoting, see PR 17852.
Fixed with Mark's patch for PR 15786. With mainline I now get: err.cc:3: error: `size_t' has not been declared err.cc:8: error: `size_t' has not been declared