Стандартизировать поведение маленьких числовых типов

Тигран Салуев
Тигран Салуев

В C++ есть целый ряд (обычно) восьмибитных интов: int8_t, int_least8_t, uint8_t, uint_least8_t. Сейчас они являются синонимами для char, но у char есть довольно непредсказуемое поведение: при печати в ostream он печатается как символ, без конвертации в десятичную систему. В итоге попытки напечатать маленькое целое заканчиваются неожиданным выводом непечатных символов. Возможно, есть ещё аналогичные проблемные моменты. Нужно сделать так, чтобы все инты вели себя как инты, при любых обстоятельствах.

6
рейтинг
4 комментария
nenomius

Было бы ещё хорошо, чтобы неинты не вели себя как инты.

nenomius
Antervis

не совсем так. char != signed char, ровно как и char != unsigned char. Ваше предложение может сломать код, опирающийся на нынешнее поведение.

Antervis
ldvsoft

Кстати, в стандарт добавили `char8_t`, это надо учитывать.

ldvsoft
WPMGPRoSToTeMa

int8_t и int_least8_t это скорее signed char, чем просто char, также и uint8_t с uint_least8_t, они скорее unsigned char.

WPMGPRoSToTeMa
Другие идеи
Группа создана, чтобы собирать предложения к стандарту C++, организовывать их внутренние обсуждения, помогать готовить их для отправки в комитет и защищать на общих собраниях в рабочей группе по С++ Международной организации по стандартизации (ISO).
Все предложения