http://gcc.gnu.org/bugzilla/show_bug.cgi?id=57283
--- Comment #4 from Jonathan Wakely <redi at gcc dot gnu.org> --- N.B. you can also do it with a nested std::bind expression and std::logical_not std::bind(std::logical_not<int>(), std::bind(std::mem_fn(&cls::value), std::placeholders::_1)) in C++14 that means you can provide a working not1 replacement: template<typename F> auto not1(F f) { return std::bind(std::logical_not<>(), std::bind(f, std::placeholders::_1)); }