Vor*_*rac 6 c++ bit-fields c++11
在C++ 11中,人们可以做到
struct S {int i = 42;};
Run Code Online (Sandbox Code Playgroud)
每当忘记初始化成员i时,它会默认初始化为42.我只是尝试使用bitfields作为
struct S {int i = 42 : 5;};
Run Code Online (Sandbox Code Playgroud)
而且我正在
错误:预期';' 在':'标记之前
对于位域成员是否存在此功能,如果存在,我该如何使用它?
不,位域不允许将初始值设定项作为成员声明的一部分。您可以在描述类成员的语法部分(C++11 及更高版本,[class.mem])中看到这一点:
成员声明
符:声明符 virt-specifier-seqopt 纯说明符opt
声明符大括号或相等初始化器opt identifieropt 属性说明符-seq opt:常量表达式
第三种形式是位域声明的语法,但只有第二种形式列出了大括号或相等初始化器。
位域初始化的语法是
struct S {int i: 5 = 42;};
Run Code Online (Sandbox Code Playgroud)
并且仅在c ++ 20中可用:-std=c++2a目前