std::is_unsigned是否意味着std::is_integral?

8

如果我需要一个满足std::is_unsignedstd::is_integral的类型,我是需要检查两个条件还是只需要检查std::is_unsigned


8
是的,is_unsigned 包含了 is_integral。你有查看过手册吗? - HolyBlackCat
@HolyBlackCat 是的,但我不明白为什么常量值等于true,如果T(0) < T(-1)意味着积分类型,但现在我确定了,谢谢。 - FlashMcQueen
2个回答

12

cppreference对于is_unsignedhttps://en.cppreference.com/w/cpp/types/is_unsigned)有以下的描述:

对于无符号整数类型和类型bool,结果为true;对于有符号整数类型和浮点类型,结果为false。对于其他任何类型,值为false。

因此,如果is_unsignedtrue,那么is_integral也是如此。


3

根据cppreference的说法,确实是这样的。

但请记住,这并不是普遍适用的,仅对本地类型有保证。我曾经在使用boost::multiprecision处理整数时出现过错误结果的问题。最好的方法是使用numeric_limits

std::numeric_limits<MyIntType>::is_signed

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