#include <stdio.h>

void genfunctadd(const char *t1, const char *t2, const char *res)
{
	printf(
	"%s plus%s_%s_%s(%s a, %s b)\n"
	"{\n"
	"  return a + b;\n"
	"}\n",
	res, t1,t2,res,t1,t2
	);
}

template<typename T1, typename T2, typename T3>
T3 add(T1 a, T2 b)
{
  return a+b;
}


int main(void)
{
	genfunctadd("char", "char", "char");
	genfunctadd("int", "int", "int");
	
	printf("%i %f", add<int,int,int>(2,2), add<float,float,float>(0.3333,0.6666));
	return 0;
}
