如果我需要一个满足std::is_unsigned
和std::is_integral
的类型,我是需要检查两个条件还是只需要检查std::is_unsigned
?
如果我需要一个满足std::is_unsigned
和std::is_integral
的类型,我是需要检查两个条件还是只需要检查std::is_unsigned
?
cppreference对于is_unsigned
(https://en.cppreference.com/w/cpp/types/is_unsigned)有以下的描述:
对于无符号整数类型和类型bool,结果为true;对于有符号整数类型和浮点类型,结果为false。对于其他任何类型,值为false。
因此,如果is_unsigned
为true
,那么is_integral
也是如此。
根据cppreference的说法,确实是这样的。
但请记住,这并不是普遍适用的,仅对本地类型有保证。我曾经在使用boost::multiprecision
处理整数时出现过错误结果的问题。最好的方法是使用numeric_limits
:
std::numeric_limits<MyIntType>::is_signed
is_unsigned
包含了is_integral
。你有查看过手册吗? - HolyBlackCat