看enum
documentation,我注意到了一件事:
枚举密钥 -
enum
之一,enum class
(自C ++ 11以来)或enum struct
(自C ++ 11)
enum
和enum class
,当然,但是什么是enum struct
?
文档似乎说enum class
和enum struct
完全相同:
[...] 范围枚举(使用枚举密钥
enum class
或enum struct
声明)
enum struct
|class
name{ enumerator = constexpr , enumerator = constexpr , ... }
- [...]
他们真的完全一样吗?或者我错过了什么差异?对同一事物有两种不同的语法有什么意义(如果它们是相同的)?
答案 0 :(得分:18)
enum class
和enum struct
是相同的(强调我的)。
7.2枚举声明
...
2 .... enum-keysenum class
和enum struct
在语义上等效 ; 使用其中一个声明的枚举类型是作用域枚举,其枚举器是作用域 枚举
答案 1 :(得分:10)
enum class
,当然,但是什么是enum struct
?
与enum class
相同。
他们真的完全一样吗?
是。文档是正确的。
或者我错过了哪些差异?
没有。没有区别。
对同一事物有两种不同的语法有什么意义(如果它们是相同的)?
我还没有找到任何书面合理化的决定。标准和提案中都没有。有人可能会猜测它与class
vs struct
类密钥有某种对应关系。这是与指定template<class T>
语法时相反的决定,其中struct
不允许。