#define GEN(Fun, Ret, Arg1, Arg2, TemplateArgs) \
template<TemplateArgs> \
Ret Fun(Arg1, Arg2) \
{ \
return Ret(); \
}
#define Id2(x, y) x, y
GEN(f, int, T, T, typename T);
GEN(g, int, T, U, Id2(typename T, typename U));
int main()
{
f(5, 7);
g(5, 7.);
}
I2RlZmluZSBHRU4oRnVuLCBSZXQsIEFyZzEsIEFyZzIsIFRlbXBsYXRlQXJncykJXAp0ZW1wbGF0ZTxUZW1wbGF0ZUFyZ3M+CSAgICAgICAgICAgICAgICAgICAgICAgIFwKUmV0IEZ1bihBcmcxLCBBcmcyKQkJICAgICAgICAgICAgICAgICAgICAgICAgXAp7CQkJCQkJICAgICAgICAgICAgICAgICAgICAgICAgXAoJcmV0dXJuIFJldCgpOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCn0KCiNkZWZpbmUgSWQyKHgsIHkpIHgsIHkKCkdFTihmLCBpbnQsIFQsIFQsIHR5cGVuYW1lIFQpOwpHRU4oZywgaW50LCBULCBVLCBJZDIodHlwZW5hbWUgVCwgdHlwZW5hbWUgVSkpOwoKaW50IG1haW4oKQp7CglmKDUsIDcpOwoJZyg1LCA3Lik7Cn0=