枚举位域和聚合初始化

问题描述 投票:13回答:2

clang 6.0.0接受以下代码,但gcc 8.2拒绝

enum class E {
  Good, Bad,
};

struct S {
  E e : 2;
  int dummy;
};

S f() {
  return {E::Good, 100};
}

Live godbolt example

海湾合作委员会抱怨

错误:无法将'{Good, 100}'从'<brace-enclosed initializer list>'转换为'S'

哪一个是正确的?标准中哪里谈到这种情况?

c++ c++11 language-lawyer bit-fields enum-class
2个回答
© www.soinside.com 2019 - 2024. All rights reserved.