【发布时间】:2011-01-09 19:49:22
【问题描述】:
如何使用具有 2 种不同输入类型和一种输出类型的模板特化来编写函数:
template <class input1, class input2, class output>
并返回 2 个数字的总和(整数/双精度数)。但是,如果我得到 2 个整数,我想返回一个整数类型,但对于整数和双精度的任何其他组合,我总是返回双精度。
我试图在不直接使用“+”运算符的情况下这样做,而是使用下一个函数:
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);}
【问题讨论】:
-
在我看来您是在描述内置运算符 + ?
-
@icecrime:假设问题是,“我如何编写一个模板函数,它的返回类型与表达式
a+b的类型相同,a 和 b 是它的输入”? C++0x 中的答案是使用decltype和尾随返回类型,但 C++03 呢?