«Знак» char
определяется реализацией. Это не должно быть в состоянии хранить отрицательные числа. В строгом стандарте char
даже является никогда целочисленным типом со знаком, даже если он может хранить отрицательные числа в реализации. Тем не менее, шаблон класса is_signed
сообщит true
для char
, если он может хранить отрицательные числа, потому что это полезная вещь для этого.
Как бы то ни было, в документах о повышении сказано следующее о make_unsigned
, и похоже, что вы можете использовать его для своих целей.
Если T является целым типом без знака, то тот же тип, что и T, если T является целочисленным типом со знаком, то соответствующий тип без знака. В противном случае, если T является перечислимым или символьным типом (char или wchar_t), тогда целочисленный тип без знака с той же шириной, что и T