#include <iostream>
#include <vector>
#include <algorithm>
#include <functional>
class IntFinder {
public:
explicit IntFinder(int value): m_value(value) { }
bool check(int value) const { return m_value == value; }
private:
int m_value;
};
int main() {
IntFinder f(42);
std::vector<int> vec = { 1, 3, 42, 5, 7 };
auto finder = std::mem_fn(&IntFinder::check);
auto pred = std::bind(finder, f, std::placeholders::_1);
auto v = std::find_if(std::begin(vec), std::end(vec), pred);
std::cout << *v << std::endl;
return 0;
}
I2luY2x1ZGUgPGlvc3RyZWFtPgojaW5jbHVkZSA8dmVjdG9yPgojaW5jbHVkZSA8YWxnb3JpdGhtPgojaW5jbHVkZSA8ZnVuY3Rpb25hbD4KCmNsYXNzIEludEZpbmRlciB7CnB1YmxpYzoKCWV4cGxpY2l0IEludEZpbmRlcihpbnQgdmFsdWUpOiBtX3ZhbHVlKHZhbHVlKSB7IH0KCWJvb2wgY2hlY2soaW50IHZhbHVlKSBjb25zdCB7IHJldHVybiBtX3ZhbHVlID09IHZhbHVlOyB9CnByaXZhdGU6CglpbnQgbV92YWx1ZTsKfTsKCmludCBtYWluKCkgewoJSW50RmluZGVyIGYoNDIpOwoJc3RkOjp2ZWN0b3I8aW50PiB2ZWMgPSB7IDEsIDMsIDQyLCA1LCA3IH07CglhdXRvIGZpbmRlciA9IHN0ZDo6bWVtX2ZuKCZJbnRGaW5kZXI6OmNoZWNrKTsKCWF1dG8gcHJlZCA9IHN0ZDo6YmluZChmaW5kZXIsIGYsIHN0ZDo6cGxhY2Vob2xkZXJzOjpfMSk7CglhdXRvIHYgPSBzdGQ6OmZpbmRfaWYoc3RkOjpiZWdpbih2ZWMpLCBzdGQ6OmVuZCh2ZWMpLCBwcmVkKTsKCXN0ZDo6Y291dCA8PCAqdiA8PCBzdGQ6OmVuZGw7CglyZXR1cm4gMDsKfQ==