Возможный дубликат:
C ++ битовая упаковка с bools
Гарантируется ли безопасное использование C ++? bool
Ключевое слово внутри определения битового поля?
Что-то вроде:
struct flags {
bool a : 1;
bool b : 1;
}
Да. На практике вы можете использовать sizeof(bool) * CHAR_BIT
как ваше руководство, чтобы узнать, сколько бит доступно.
Из C ++ 98, § 9.6.3
Битовое поле должно иметь целочисленный тип или тип перечисления (3.9.1).
Из C ++ 98, § 3.9.1.7
Типы bool, char, wchar_t, а также целочисленные типы со знаком и без знака вместе называются целочисленными.
типы
Из C ++ 03 9.6 «Битовые поля»:
Битовое поле должно иметь целочисленный тип или тип перечисления (3.9.1). это
определяется реализацией ли простой (ни явно подписано, ни
unsigned) char, short, int или long битовое поле подписано или не подписано.
Значение bool может быть успешно сохранено в битовом поле любого ненулевого значения
размер. …Если значение true или false хранится в битовом поле типа bool
любой размер (включая одноразрядное битовое поле), исходное значение bool и
значение битового поля должно сравниваться равным. …
3.9.1 / 7 «Основные типы» указывает, что bool
является интегральным типом.