如何使用具有2种不同输入类型和输出类型的模板特化来编写函数:
template <class input1, class input2, class output>
Run Code Online (Sandbox Code Playgroud)
并返回2个数字的总和(整数/双精度数).但是,如果我得到2个整数,我想返回一个整数类型,但对于整数和双精度的任何其他组合,我总是返回double.
我试图这样做而不直接使用'+'运算符,而是使用下一个函数:
double add_double_double(double a, double b) {return (a+b);}
double add_int_double(int a, double b) {return ((double)(a)+b);}
int add_int_int(int a, int b) {return (a+b);}
Run Code Online (Sandbox Code Playgroud)
如果你可以使用C++ 0x,你可以这样做:
template <typename T, typename U>
auto add(T lhs, U rhs) -> decltype(lhs+rhs)
{
return lhs+rhs;
}
Run Code Online (Sandbox Code Playgroud)