Возможность заполнения в основных типах - PullRequest
1 голос
/ 29 июня 2019

Как указано в cppreference (выделено мной):

Значение std :: numeric_limits :: digits - это количество цифр в базовом радиксе, которое может быть представлено типом T без изменений. Для целочисленных типов это количество битов, не считая знакового бита, и битов заполнения (если есть) . Для типов с плавающей точкой это число цифр в мантиссе.

Реализация может добавить биты заполнения к основным типам. Есть ли реализация, где любой из этих типов на самом деле дополнен? Нужна ли эта формулировка для поддержки всего аппаратного обеспечения или это просто параноидальный стандарт?

Ответы [ 2 ]

1 голос
/ 29 июня 2019

std::numeric_limits<bool>::digits возвращает 1, указывая, что bool дополняется (обычно 7 из 8 бит).

0 голосов
/ 30 июня 2019

Суммируя все в одном ответе:

Типы с числом уникальных состояний, меньшим, чем представимые состояния в одном или нескольких байтах, будут дополнены (например, bool и std :: nullptr_t).

Если кто-то заставит компилятор изменить выравнивание типов в массиве, элементы в массиве могут быть дополнены, чтобы соответствовать требованию принудительного выравнивания.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...