【问题标题】:Why is std::valarray non-arithmetic?为什么 std::valarray 不是算术的?
【发布时间】:2020-07-12 10:16:47
【问题描述】:

我注意到std::is_arithmetic<std::valarray<float>> 的计算结果为false。 valarrays 的全部意义不是促进重载标量代码以“自动矢量化”而不求助于 boost 等吗?

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

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

【问题讨论】:

  • 您正在检查 std::valarray<float> 是否是算术运算(即 容器 本身)。您可能想要检查底层类型:std::valarray<float>::value_type(即std::valarray<float>[0])。

标签: c++ typetraits valarray


【解决方案1】:

std::is_arithmetic 告诉您类型是 基本 数字类型,如整数或浮点数。它不适用于课程。而且你不能自己专门化它,所以你不能“修复”它,但你可以编写自己的类型特征来做任何你想做的事情。

顺便说一句,std::is_array<std::array<int, 5>> 也是假的!

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-05-10
    • 2011-02-04
    • 2017-08-12
    • 2022-10-02
    • 1970-01-01
    • 1970-01-01
    • 2019-10-06
    • 2020-10-28
    相关资源
    最近更新 更多