https://gcc.gnu.org/bugzilla/show_bug.cgi?id=119191

            Bug ID: 119191
           Summary: Add fix-it for missing argument list in operator()
           Product: gcc
           Version: 15.0
            Status: UNCONFIRMED
          Keywords: diagnostic
          Severity: enhancement
          Priority: P3
         Component: c++
          Assignee: unassigned at gcc dot gnu.org
          Reporter: redi at gcc dot gnu.org
  Target Milestone: ---

struct A {
  void operator();
  void operator(int);
};

struct B {
  void operator() { }
  void operator(int) { }
};

struct C {
  void operator() const;
  void operator(int) const;
};

These are all invalid declarations, they should be operator()() or
operator()(int).

The diagnostics are not very clear though:


callop.cc:2:8: error: declaration of ‘operator()’ as non-function
    2 |   void operator();
      |        ^~~~~~~~
callop.cc:3:16: error: expected type-specifier before ‘(’ token
    3 |   void operator(int, int);
      |                ^
callop.cc:7:8: error: declaration of ‘operator()’ as non-function
    7 |   void operator() { }
      |        ^~~~~~~~
callop.cc:7:21: error: expected ‘;’ at end of member declaration
    7 |   void operator() { }
      |                     ^
      |                      ;
callop.cc:8:16: error: expected type-specifier before ‘(’ token
    8 |   void operator(int, int) { }
      |                ^
callop.cc:12:8: error: declaration of ‘operator()’ as non-function
   12 |   void operator() const;
      |        ^~~~~~~~
callop.cc:12:17: error: expected ‘;’ at end of member declaration
   12 |   void operator() const;
      |                 ^
      |                  ;
callop.cc:12:19: error: declaration does not declare anything [-fpermissive]
   12 |   void operator() const;
      |                   ^~~~~
callop.cc:13:16: error: expected type-specifier before ‘(’ token
   13 |   void operator(int, int) const;
      |                ^


It would be nice if we added a fix-it suggesting to add `()' after `operator'

Reply via email to