iam*_*ind 16 c++ bit-fields in-class-initialization c++11
struct bitfield {
int i = 0; // ok
int j : 8 = 0; // error: lvalue required as left operand of assignment
};
Run Code Online (Sandbox Code Playgroud)
使用C++ 11"类内初始化"功能初始化位字段的正确语法是什么?
Vil*_*nen 12
这被提升为C++标准的核心问题1341,但在2015年10月被C++核心工作组拒绝为NAD("不是缺陷") - 请参阅http://open-std.org/JTC1/SC22/WG21 /docs/cwg_closed.html#1341
And*_*owl 10
使用C++ 11"类内初始化"功能初始化位字段的正确语法是什么?
您无法初始化类中的位字段.C++ 11标准的第9.2段规定了类成员声明符的语法:
[...]
成员声明符:
declarator virt-specifier-seq(opt)pure-specifier(opt)
declarator brace-or-equal-initializer(opt)
identifier(opt)attribute-specifier-seq(opt):constant-expression
如您所见,位字段成员的声明符不能由大括号或等号初始化程序终止.