Подразумевает ли std :: is_unsigned std :: is_integral - PullRequest
0 голосов
/ 28 ноября 2018

Если мне нужен тип, который удовлетворяет std::is_unsigned и std::is_integral, я должен проверить оба или только std::is_unsigned?

Ответы [ 2 ]

0 голосов
/ 28 ноября 2018

Да, это выполняется в соответствии с cppreference .

Просто имейте в виду, что это не работает везде и гарантировано только для нативных типов.У меня была проблема с boost::multiprecision, дающим неправильные результаты для целых чисел.Лучший способ сделать это с помощью numeric_limits:

std::numeric_limits<MyIntType>::is_signed
0 голосов
/ 28 ноября 2018

cppreference имеет эту строку для is_unsigned (https://en.cppreference.com/w/cpp/types/is_unsigned):

) это приводит к истине для целочисленных типов без знака и типу bool и к ложному для целочисленных типов со знаком и с плавающей точкойтипы. Для любого другого типа значение равно false.

, поэтому, если is_unsigned равно true, то is_integral также будет.

...