#include <functional>
#include <iostream>
struct compare_equal{
template<class LHS, class RHS>
bool operator()(LHS&& lhs, RHS&& rhs){ // assume bool return
return std::forward<LHS>(lhs) == std::forward<RHS>(rhs);
}
};
int main(){
using std::placeholders::_1;
auto equals_five = std::bind(compare_equal(), _1, 5);
std::cout << std::boolalpha << equals_five(5);
}
I2luY2x1ZGUgPGZ1bmN0aW9uYWw+CiNpbmNsdWRlIDxpb3N0cmVhbT4KCnN0cnVjdCBjb21wYXJlX2VxdWFsewogIHRlbXBsYXRlPGNsYXNzIExIUywgY2xhc3MgUkhTPgogIGJvb2wgb3BlcmF0b3IoKShMSFMmJiBsaHMsIFJIUyYmIHJocyl7IC8vIGFzc3VtZSBib29sIHJldHVybgogICAgcmV0dXJuIHN0ZDo6Zm9yd2FyZDxMSFM+KGxocykgPT0gc3RkOjpmb3J3YXJkPFJIUz4ocmhzKTsKICB9Cn07CgppbnQgbWFpbigpewogIHVzaW5nIHN0ZDo6cGxhY2Vob2xkZXJzOjpfMTsKICBhdXRvIGVxdWFsc19maXZlID0gc3RkOjpiaW5kKGNvbXBhcmVfZXF1YWwoKSwgXzEsIDUpOwogIHN0ZDo6Y291dCA8PCBzdGQ6OmJvb2xhbHBoYSA8PCBlcXVhbHNfZml2ZSg1KTsKfQ==