为什么 std::valarray 是非算术的?

Man*_*l S 3 c++ type-traits valarray

我注意到std::is_arithmetic<std::valarray<float>>评估为false. 不是 valarrays 的全部意义在于促进将标量代码重载到“自动矢量化”而不诉诸 boost 等吗?

为什么它不继承其模板类型的算术属性?

我的问题不一定是问题,而是我的根本误解,因为如果确实有意,我一定会错过一些哲学见解。

Joh*_*nck 6

std::is_arithmetic告诉您该类型是基本数字类型,如整数还是浮点数。它不适用于类。并且您不允许自己专门化它,因此您无法“修复”它,但是您可以编写自己的类型特征来做任何您想做的事情。

对了,std::is_array<std::array<int, 5>>也是假的!