template <int line, typename FuncSig, FuncSig f>
struct HelperWrapper;
// [...]
template <int line, typename Ret, Ret (&Func)()>
struct HelperWrapper<line, Ret (&)(), Func>
{
static inline int WrapFuncT(const int)
{
return 0; // Changed
}
};
// Unary
template <int line, typename Ret, typename Arg1, Ret (&Func)(Arg1)>
struct HelperWrapper<line, Ret (&)(Arg1), Func>
{
static inline int WrapFuncT(const int)
{
return 1; // Changed
}
};
void none (){}
void one (int) {}
int main () {
HelperWrapper<0, void (&)(), none>::WrapFuncT(0);
HelperWrapper<1, void (&)(int), one>::WrapFuncT(0);
}
dGVtcGxhdGUgPGludCBsaW5lLCB0eXBlbmFtZSBGdW5jU2lnLCBGdW5jU2lnIGY+CnN0cnVjdCBIZWxwZXJXcmFwcGVyOwoKLy8gWy4uLl0KCnRlbXBsYXRlIDxpbnQgbGluZSwgdHlwZW5hbWUgUmV0LCBSZXQgKCZGdW5jKSgpPgpzdHJ1Y3QgSGVscGVyV3JhcHBlcjxsaW5lLCBSZXQgKCYpKCksIEZ1bmM+CnsKICAgIHN0YXRpYyBpbmxpbmUgaW50IFdyYXBGdW5jVChjb25zdCBpbnQpCiAgICB7CiAgICAgICAgcmV0dXJuIDA7IC8vIENoYW5nZWQKICAgIH0KfTsKCi8vIFVuYXJ5CnRlbXBsYXRlIDxpbnQgbGluZSwgdHlwZW5hbWUgUmV0LCB0eXBlbmFtZSBBcmcxLCBSZXQgKCZGdW5jKShBcmcxKT4Kc3RydWN0IEhlbHBlcldyYXBwZXI8bGluZSwgUmV0ICgmKShBcmcxKSwgRnVuYz4KewogICAgc3RhdGljIGlubGluZSBpbnQgV3JhcEZ1bmNUKGNvbnN0IGludCkKICAgIHsKICAgICAgICByZXR1cm4gMTsgLy8gQ2hhbmdlZAogICAgfQp9OwoKdm9pZCBub25lICgpe30Kdm9pZCBvbmUgKGludCkge30KCmludCBtYWluICgpIHsKICBIZWxwZXJXcmFwcGVyPDAsIHZvaWQgKCYpKCksIG5vbmU+OjpXcmFwRnVuY1QoMCk7CiAgSGVscGVyV3JhcHBlcjwxLCB2b2lkICgmKShpbnQpLCBvbmU+OjpXcmFwRnVuY1QoMCk7Cn0=