Это может быть то, что вам нужно:
#include <iostream>
using namespace std;
template <class input1, class input2, class output> output add(input1 n1, input2 n2) {
return (output) n1 + (output) n2;
}
int main(int argc, char **argv) {
cout << add<int, int, int>(1,1) << endl;
cout << add<float, int, float>(1.1f,1) << endl;
cout << add<int, float, float>(1,1.1f) << endl;
cout << add<float, float, int>(1.1f,1.1f) << endl;
return 0;
}
Результат:
quad: > ./a.out
2
2.1
2.1
2
Sun 09 Jan 2011 12:57:57 PM MST
quad: >