为什么 std::valarray 是非算术的?
Why is std::valarray non-arithmetic?
我注意到 std::is_arithmetic<std::valarray<float>>
的计算结果为 false
。 valarrays 的全部目的不是为了方便将标量代码重载到 'auto-vectorise' 而无需诉诸 boost 等吗?
为什么它不继承其模板类型的算术属性?
我的问题不一定是问题,而是我的根本误解,因为如果这确实是有意的,我一定错过了一些哲学见解。
std::is_arithmetic
告诉您类型是 基本 数字类型,例如整数或浮点数。它不适用于 类。而且你不能自己专门化它,所以你不能“修复”它,但你可以编写你自己的类型特征来做任何你想做的事情。
对了,std::is_array<std::array<int, 5>>
也是假的!
我注意到 std::is_arithmetic<std::valarray<float>>
的计算结果为 false
。 valarrays 的全部目的不是为了方便将标量代码重载到 'auto-vectorise' 而无需诉诸 boost 等吗?
为什么它不继承其模板类型的算术属性?
我的问题不一定是问题,而是我的根本误解,因为如果这确实是有意的,我一定错过了一些哲学见解。
std::is_arithmetic
告诉您类型是 基本 数字类型,例如整数或浮点数。它不适用于 类。而且你不能自己专门化它,所以你不能“修复”它,但你可以编写你自己的类型特征来做任何你想做的事情。
对了,std::is_array<std::array<int, 5>>
也是假的!