#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;
}
I2luY2x1ZGUgPHN0ZGlvLmg+Cgp2b2lkIGdlbmZ1bmN0YWRkKGNvbnN0IGNoYXIgKnQxLCBjb25zdCBjaGFyICp0MiwgY29uc3QgY2hhciAqcmVzKQp7CglwcmludGYoCgkiJXMgcGx1cyVzXyVzXyVzKCVzIGEsICVzIGIpXG4iCgkie1xuIgoJIiAgcmV0dXJuIGEgKyBiO1xuIgoJIn1cbiIsCglyZXMsIHQxLHQyLHJlcyx0MSx0MgoJKTsKfQoKdGVtcGxhdGU8dHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMz4KVDMgYWRkKFQxIGEsIFQyIGIpCnsKICByZXR1cm4gYStiOwp9CgoKaW50IG1haW4odm9pZCkKewoJZ2VuZnVuY3RhZGQoImNoYXIiLCAiY2hhciIsICJjaGFyIik7CglnZW5mdW5jdGFkZCgiaW50IiwgImludCIsICJpbnQiKTsKCQoJcHJpbnRmKCIlaSAlZiIsIGFkZDxpbnQsaW50LGludD4oMiwyKSwgYWRkPGZsb2F0LGZsb2F0LGZsb2F0PigwLjMzMzMsMC42NjY2KSk7CglyZXR1cm4gMDsKfQo=