#include <iostream>
template<typename T>
T f(int x, T y);
template<typename T>
T f(double x, T y);
int main()
{
std::printf("f<int>(int) %d\nf<double>(int) %f\nf<int>(double) %d\nf<double>(double) %f\n",
f<int>(1, 1),
f<double>(1, 1.0),
f<int>(1.0, 1),
f<double>(1.0, 1.0));
return 0;
}
template<typename T>
T f(int x, T y) {
return x + y;
}
template<typename T>
T f(double x, T y) {
return x - y;
}