#include <iostream>
using namespace std;
template <typename ReturnType, typename... Args>
auto CallIt( ReturnType( *method )( Args... ) ) -> ReturnType(*)(Args...)
{
return method;
}
int main() {
auto test = CallIt( +[] ( int a, int b )
{
return a > b;
} );
cout << test(4,1);
return 0;
}
I2luY2x1ZGUgPGlvc3RyZWFtPgp1c2luZyBuYW1lc3BhY2Ugc3RkOwoKdGVtcGxhdGUgPHR5cGVuYW1lIFJldHVyblR5cGUsIHR5cGVuYW1lLi4uIEFyZ3M+CmF1dG8gQ2FsbEl0KCBSZXR1cm5UeXBlKCAqbWV0aG9kICkoIEFyZ3MuLi4gKSApIC0+IFJldHVyblR5cGUoKikoQXJncy4uLikKewogICAgcmV0dXJuIG1ldGhvZDsKfQoKaW50IG1haW4oKSB7CgogICAgYXV0byB0ZXN0ID0gQ2FsbEl0KCArW10gKCBpbnQgYSwgaW50IGIgKQogICAgewogICAgICAgIHJldHVybiBhID4gYjsKICAgIH0gKTsKICAgIAogICAgY291dCA8PCB0ZXN0KDQsMSk7CgogICAgcmV0dXJuIDA7Cn0=