C++ 枚举位字段初始化为C++;14

C++ 枚举位字段初始化为C++;14,c++,struct,enums,visual-studio-2015,bit-fields,C++,Struct,Enums,Visual Studio 2015,Bit Fields,我有一个结构,其中有一个位字段,类型为enum: enum TCDATA_FORMAT { a, b, c, d }; struct ctypetc { TCDATA_FORMAT Input : 16; TCDATA_FORMAT Output : 16; }; 在C++11(VS2013)之前,该初始化工作正常: ctypetc ctyp = { b, c }; 但是使用C++14(VS2015更新1),它将输入和输出初始化为0。有人知道为什么吗?我猜这与枚举位字段有关 编辑: 如果

我有一个结构,其中有一个位字段,类型为enum:

enum TCDATA_FORMAT { a, b, c, d  }; 
struct ctypetc { TCDATA_FORMAT Input : 16; TCDATA_FORMAT Output : 16; };
在C++11(VS2013)之前,该初始化工作正常:

ctypetc ctyp = { b, c };
但是使用C++14(VS2015更新1),它将输入和输出初始化为0。有人知道为什么吗?我猜这与枚举位字段有关

编辑: 如果我尝试:

ctyp.Input = b;
ctyp.Output = c;

它工作正常。

MSVC没有C++11模式。你在说什么?更像VS2013 VS2015。编辑了问题。快速评论,不是真正的答案:您是否尝试将枚举重写为枚举类<代码>枚举类TCDATA_格式:短{a,b,c,d}。这样,就可以完全去掉位字段。(您只有4项,所以如果大小是一个问题,我会尽量使用
char
作为基础类型)VS2015的哪个版本?更新1?2.3?这些都是一些创造性地洗牌的资本化做法;)不管怎样,是的,巴格。这在我的
g++-6
上运行得很好,可以打印您期望的
1
2
。嘿,微软非常有礼貌地在一张整洁的表格中列出bug,并列出报告者的姓名:)