表达模板化负数字文字的首选方式

pla*_*cel 4 c++ templates c++11

虽然关于模板化数字文字的使用存在一个很好的问题,但它没有提到数字文字是负值时的情况.

应该首选哪种变体?为什么?

一个

template <typename T>
T expr(T x)
{
    constexpr T scale = T(-9.0);
    return x * scale;
}
Run Code Online (Sandbox Code Playgroud)

template <typename T>
T expr(T x)
{
    constexpr T scale = -T(9.0);
    return x * scale;
}
Run Code Online (Sandbox Code Playgroud)

Nia*_*all 6

我赞成A超过B.

选项A假设类型少于B,因为-对于所有类型(例如溢出条件等),一元可能没有很好地定义,但对数字文字来说它是好的.这对眼睛来说更容易一些.

当然,问题是数字类型,所以要么就好了.