http://gcc.gnu.org/bugzilla/show_bug.cgi?id=57283
Jonathan Wakely <redi at gcc dot gnu.org> changed: What |Removed |Added ---------------------------------------------------------------------------- Status|UNCONFIRMED |RESOLVED Resolution|--- |INVALID --- Comment #1 from Jonathan Wakely <redi at gcc dot gnu.org> --- The standard is clear, the typedef is not required when wrapping a pointer to member data, see [func.memfn] You can use a lambda expression in C++11: [](const cls& c) { return !c.value; }; In C++14 you will be able to write a generic lambda to negate arbitrary function objects, replacing std::not1 completely: [](auto f) { return !f(); };