Having a class like this:
class A { public: bool hasGrandChild() const; private: bool hasChild() const; vector children_; };
Workaround:
typedef bool (A::*MemFn)(void) const; bool A::hasGrandChild() const { MemFn f = &A::hasChild; return any_of(childs_.begin(), childs_.end(), [=](A const &a) { return (a.*f)(); }); }