#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;
}