#include <iostream>
template<class T, class F>
bool foo(T&& a, T&& b, F&& f)
{
return f(a, b);
}
bool cmp(int a, int b)
{
return a == b;
}
int main()
{
std:: cout << std::boolalpha << "3 == 5 --> " << foo(3, 5, cmp) << std::endl;
}
I2luY2x1ZGUgPGlvc3RyZWFtPgoKdGVtcGxhdGU8Y2xhc3MgVCwgY2xhc3MgRj4KYm9vbCBmb28oVCYmIGEsIFQmJiBiLCBGJiYgZikKewogICAgcmV0dXJuIGYoYSwgYik7Cn0KCmJvb2wgY21wKGludCBhLCBpbnQgYikKewogICAgcmV0dXJuIGEgPT0gYjsKfQoKaW50IG1haW4oKQp7CiAgICBzdGQ6OiBjb3V0IDw8IHN0ZDo6Ym9vbGFscGhhIDw8ICIzID09IDUgLS0+ICIgPDwgZm9vKDMsIDUsIGNtcCkgPDwgc3RkOjplbmRsOwogICAgCn0=