为什么std::valarray不是算术数组?

3
我注意到std::is_arithmetic<std::valarray<float>>的评估结果为false。难道valarray的整个目的不是为了在不使用boost等工具的情况下促进标量代码的自动向量化吗?
为什么它不能继承其模板类型的算术属性?
我的问题并不一定是一个“问题”,而只是在我这方面存在基本误解,因为如果确实打算这样做,我肯定会错过某些哲学上的洞察力。

你正在检查 std::valarray<float> 是否是算术类型(即容器本身)。你可能想要检查底层类型:std::valarray<float>::value_type(即,std::valarray<float>[0])。 - Cody Gray
1个回答

5

std::is_arithmetic用于判断类型是否为基本的数值类型,例如整型或浮点型。它不能用于类。您无法专门化该函数,因此无法更改其功能,但可以编写自己的类型特征来实现所需功能。

顺便说一下,std::is_array<std::array<int, 5>>也是false!


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接