虽然有个不错的question关于模板化数字字面量的使用,没有提到数字字面量为负值的情况。
应该首选哪种变体,为什么?
一个
template <typename T>
T expr(T x)
{
constexpr T scale = T(-9.0);
return x * scale;
}
B
template <typename T>
T expr(T x)
{
constexpr T scale = -T(9.0);
return x * scale;
}
最佳答案
我更喜欢 A 而不是 B。
选项 A 对类型的假设比 B 少,因为一元 -
可能没有为所有类型很好地定义(例如溢出条件等,但它适用于数字文字)。那并且它在眼睛上更容易一些。
当然,问题是针对数值类型的,所以两者都可以。
关于c++ - 表达模板化负数字文字的首选方式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33155618/