bool operator()(const C &obj, const T &v) { return pred(obj.*mem_ptr, v); }
bool operator()(const T &v, const C &obj) { return pred(v, obj.*mem_ptr); }
bool operator()(const C &obj1, const C &obj2) { return pred(obj1.*mem_ptr, obj2.*mem_ptr); }
bool operator()(const C &obj, const T &v) { return pred(obj.*mem_ptr, v); }
bool operator()(const T &v, const C &obj) { return pred(v, obj.*mem_ptr); }
bool operator()(const C &obj1, const C &obj2) { return pred(obj1.*mem_ptr, obj2.*mem_ptr); }