bool在比特定义中是安全的吗?

Eri*_*ric 5 c++ boolean bit-fields

可能重复:
使用bool进行C++位域打包

bool在位域定义中使用C++的关键字是否安全?

就像是:

struct flags {
    bool a : 1;
    bool b : 1;
}
Run Code Online (Sandbox Code Playgroud)

Mic*_*urr 6

来自C++ 03 9.6"比特字段":

位域应具有整数或枚举类型(3.9.1).它是实现定义的是明文(既没有显式签名也没有未签名)char,short,int或long位字段是有符号还是无符号.bool值可以成功地存储在任何非零大小的位字段中....

如果将值true或false存储到任何大小的bool类型的位字段(包括一位位字段)中,则原始bool值和位字段的值应相等....

3.9.1/7"基本类型"指定bool是一个整数类型.


Bri*_*ain 5

是.在实践中,您可以使用sizeof(bool) * CHAR_BIT您的指南来了解可用的位数.

从C++ 98,§9.6.3

位域应具有整数或枚举类型(3.9.1).

从C++ 98,§3.9.1.7

类型bool,char,wchar_t以及有符号和无符号整数类型统称为整数类型