我有一个模板化的数学函数,它接受两个值,对它们进行一些数学运算,然后返回一个相同类型的值。
template <typename T>
T math_function(T a, T b) {
LongT x = MATH_OP1(a,b);
return MATH_OP2(x,a);
}
我想将中间值(在 x 中)存储在一个基本上是 T 的长版本(上面称为 LongT)的类型中。所以,如果 T 是浮点数,我希望 x 是双精度数;如果 T 是一个 int,我希望 x 是一个 long int。
有没有办法做到这一点?我试过enable_if
了,但似乎我真的需要一个enable_if_else
.
我宁愿让编译器自己弄清楚 LongT 使用什么。我宁愿在调用函数时不必指定它。