8-2 位域的默认初始化(C++20)

8.2 位域的默认初始化

​ 在C++20后,允许对数据成员的位域进行默认初始化。

struct X
{
int y : 8 = 11; //低八位
int z : 4 {7}; //低四位
}

​ 同时,也可以使用常量表达式来替代位域的长度:

int a;
struct S2
{
int y : (true ? 8 : a) = 42;
int z : (1 || new int) {0};
}

​ **注意:**上述表达式如果删除括号,则等价于下面的表达式,即结合顺序错误。

int a;
struct S2
{
int y : (true ? 8 : a = 42);
int z : (1 || new int {0});
}