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

--- Comment #3 from Tom Tromey <tromey at gcc dot gnu.org> ---
(In reply to Manuel López-Ibáñez from comment #1)
> Confirmed. A small testcase would help. Perhaps it would be even clearer if
> it said something like: "non-static member function can be used only as the
> operand for the function call operator()"

Here's something reasonably close to my real-life case:

struct X {
  X(void *);
  void m();
};

struct Y : public X{
  Y(void*a, void *b) : X(m), mb(b) { }
  void *mb;
};


A bit wordy perhaps.  But you can see how the error is unclear (partly
due to that other bug):

pokyo. g++ --syntax-only r.cc
r.cc: In constructor ‘Y::Y(void*, void*)’:
r.cc:7:34: error: invalid use of non-static member function
   Y(void*a, void *b) : X(m), mb(b) { }
                                  ^

It's even worse if you aren't familiar with the code - in my real-life
case, the typo was meant to be one of the argument names, but actually
named a method of a superclass that was in some other file...

Reply via email to