She*_*evy 5 c++ enums language-lawyer c++14
我期待通过n3690
,即将到来的选秀C++14
标准,我在看节7.2
段9
:
如果两个枚举类型具有相同的基础类型,则它们是布局兼容的。
但是,我找不到任何说明枚举类型与其基础类型布局兼容的内容。对我来说,考虑到“基础类型”的含义,这应该遵循合理的语义,这似乎很明显,但标准是否真的保证了这一点?
不,标准中没有明确引用这一点。最接近的是同一段落的第 7 点
\n\n\n\n\n7 [...] 基础类型是整型,可以表示枚举中的所有枚举值 de\xef\xac\x81ned。如果没有整型\n 可以表示所有枚举数值,则该枚举\n 格式错误。[...]
\n
此外,4.5 积分促销 [conv.prom] 说
\n\n\n\n\n4 基础类型为\n \xef\xac\x81xed (7.2) 的无作用域枚举类型的纯右值可以转换为其基础类型的纯右值。
\n
正如评论中所指出的,可能存在(不正当的 IMO)实现,它们在枚举及其基础类型之间具有不同的字节序。这将是一个实施质量问题。出于所有实际目的,应该预期布局兼容性。
\n 归档时间: |
|
查看次数: |
249 次 |
最近记录: |