【问题标题】:Does std::is_unsigned imply std::is_integralstd::is_unsigned 是否暗示 std::is_integral
【发布时间】:2018-11-28 09:46:18
【问题描述】:

如果我需要满足std::is_unsignedstd::is_integral 的类型,我必须同时检查还是只检查std::is_unsigned

【问题讨论】:

  • 是的,is_unsigned 暗示 is_integral。你检查manual了吗?
  • @HolyBlackCat 是的,但我不明白为什么如果 T(0)

标签: c++ typetraits


【解决方案1】:

cppreference 有 is_unsigned (https://en.cppreference.com/w/cpp/types/is_unsigned) 的这一行:

这导致无符号整数类型和 bool 类型为 true,而有符号整数类型和浮点类型为 false。 对于任何其他类型,值为 false。

所以如果is_unsignedtrue,那么is_integral 也是。

【讨论】:

    【解决方案2】:

    是的,它是根据cppreference

    请记住,这并不适用于任何地方,并且仅适用于本机类型。我遇到了boost::multiprecision 为整数提供错误结果的问题。最好的方法是使用numeric_limits:

    std::numeric_limits<MyIntType>::is_signed
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-01-18
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-12-21
      • 1970-01-01
      相关资源
      最近更新 更多