#define GEN(Fun, Ret, Arg1, Arg2, TemplateArgs)	\
template<TemplateArgs>	                        \
Ret Fun(Arg1, Arg2)		                        \
{						                        \
	return Ret();                               \
}

GEN(f, int, T, T, typename T);
GEN(g, int, T, U, typename T, typename U);

int main()
{
	f(5, 7);
	g(5, 7.);
}