https://gcc.gnu.org/bugzilla/show_bug.cgi?id=119191
--- Comment #2 from Jonathan Wakely <redi at gcc dot gnu.org> ---
EDG is almost there:
"callop.cc", line 2: error: an operator name must be declared as a function
void operator();
^
"callop.cc", line 3: error: expected an operator
void operator(int);
^
"callop.cc", line 7: error: an operator name must be declared as a function
void operator() { }
^
"callop.cc", line 7: error: expected a ";"
void operator() { }
^
"callop.cc", line 12: error: an operator name must be declared as a function
void operator() const;
^
"callop.cc", line 12: error: expected a ";"
void operator() const;
^
"callop.cc", line 13: error: expected an operator
void operator(int) const;
^
7 errors detected in the compilation of "callop.cc".
For the first one, "an operator name must be declared as a function" is
correctly saying that 'operator()' is an operator name, and so it must be
declared as a function, i.e. with a parameter list. That's technically correct,
and not just "that's wrong", but could use more user-friendly wording.
And for the second one, "expected an operator" for 'operator(int)' is saying
that it excpected an operator before the parameter list, e.g. 'operator++' or
'operator()'. Again, technically correct, but could be more user-friendly.