At the very least, you'll want to move `pred` into the `predicate`. Why is this better than `invokable`? Btw, `predicate` should handle Boolean data member pointers in addition to member functions.