如果我需要同时满足std::is_unsigned
和std::is_integral
的类型,我是否必须同时检查或只检查std::is_unsigned
?
答案 0 :(得分:10)
cppreference在is_unsigned
(https://en.cppreference.com/w/cpp/types/is_unsigned)中有以下一行:
对于无符号整数类型和bool类型,结果为true;对于有符号整数类型和浮点类型,结果为false。 对于任何其他类型,值都是false。
因此,如果is_unsigned
是true
,那么is_integral
也将如此。
答案 1 :(得分:2)
是的,它按照cppreference进行操作。
请记住,这并非在所有地方都有效,并且仅对本机类型保证。我遇到boost::multiprecision
给出整数结果错误的问题。最好的方法是使用numeric_limits
:
std::numeric_limits<MyIntType>::is_signed