枚举类型布局是否与其基础类型兼容?

时间:2014-02-22 15:02:42

标签: c++ enums language-lawyer c++14

我正在浏览即将n3690标准的草稿C++14,我在第7.29部分中看到:

  

如果两个枚举类型具有相同的基础类型,则它们是布局兼容的。

但是,我找不到任何说明枚举类型与其基础类型布局兼容的内容。对我而言,似乎应该遵循“底层类型”意味着什么的合理语义,但它实际上是否由标准保证?

1 个答案:

答案 0 :(得分:2)

不,标准中没有指定此字母的黑色引号。一个人可以得到的最接近的是同一段的第7点

  

7 [...]底层类型是一个可以代表所有类型的整数类型   枚举中定义的枚举值。如果没有整数类型   可以表示所有枚举器值,枚举是   病态的。 [...]

此外,4.5整体促销[conv.prom]说

  

4未编码枚举类型的prvalue,其基础类型为   固定(7.2)可以转换为其基础类型的初始值。

正如评论中所指出的,可能存在(狡猾的IMO)实现,它们在枚举和其基础类型之间具有不同的字节顺序。这将是一个执行质量问题。出于所有实际目的,应该期望布局兼容性。