#include <iostream>
using namespace std;
struct A
{
static int f1(int a, int b)
{
return a + b;
}
};
int f2(int a, int b)
{
return a + b;
}
template <typename T, T X>
struct wrapper
{
template <typename... Args>
static bool value(Args... blargs)
{
return X(blargs...) == 3;
}
};
int main()
{
bool res;
res = wrapper<decltype(&A::f1), &A::f1>::value(1,2);
cout << res << endl;
return 0;
}
I2luY2x1ZGUgPGlvc3RyZWFtPgoKdXNpbmcgbmFtZXNwYWNlIHN0ZDsKCnN0cnVjdCBBCnsKICAgIHN0YXRpYyBpbnQgZjEoaW50IGEsIGludCBiKQogICAgewogICAgICAgIHJldHVybiBhICsgYjsKICAgIH0KfTsKCmludCBmMihpbnQgYSwgaW50IGIpCnsKICAgIHJldHVybiBhICsgYjsKfQoKdGVtcGxhdGUgPHR5cGVuYW1lIFQsIFQgWD4Kc3RydWN0IHdyYXBwZXIKewogICAgdGVtcGxhdGUgPHR5cGVuYW1lLi4uIEFyZ3M+CiAgICBzdGF0aWMgYm9vbCB2YWx1ZShBcmdzLi4uIGJsYXJncykKICAgIHsKICAgICAgICByZXR1cm4gWChibGFyZ3MuLi4pID09IDM7CiAgICB9Cn07CgppbnQgbWFpbigpCnsKICAgIGJvb2wgcmVzOwogICAgcmVzID0gd3JhcHBlcjxkZWNsdHlwZSgmQTo6ZjEpLCAmQTo6ZjE+Ojp2YWx1ZSgxLDIpOwogICAgY291dCA8PCByZXMgPDwgZW5kbDsKICAgIHJldHVybiAwOwp9