std :: is_unsigned是否暗示std :: is_integral

时间:2018-11-28 09:46:19

标签: c++ typetraits

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

2 个答案:

答案 0 :(得分:10)

cppreference在is_unsignedhttps://en.cppreference.com/w/cpp/types/is_unsigned)中有以下一行:

  

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

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

答案 1 :(得分:2)

是的,它按照cppreference进行操作。

请记住,这并非在所有地方都有效,并且仅对本机类型保证。我遇到boost::multiprecision给出整数结果错误的问题。最好的方法是使用numeric_limits

std::numeric_limits<MyIntType>::is_signed