为什么 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>>也是假的!