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...