enum struct和enum class有什么区别?

时间:2016-07-22 23:26:19

标签: c++ c++11 enums

enum documentation,我注意到了一件事:

  

枚举密钥 - enum之一,enum class(自C ++ 11以来)或enum struct(自C ++ 11)

enumenum class,当然,但是什么是enum struct

文档似乎说enum classenum struct完全相同:

  

[...] 范围枚举(使用枚举密钥 enum classenum struct声明)

           
      
  • enum struct | class name { enumerator = constexpr , enumerator = constexpr , ... }
  •   
  • [...]
  •   

他们真的完全一样吗?或者我错过了什么差异?对同一事物有两种不同的语法有什么意义(如果它们是相同的)?

2 个答案:

答案 0 :(得分:18)

enum classenum struct是相同的(强调我的)。

  

7.2枚举声明
...
   2 .... enum-keys enum classenum struct 在语义上等效 ;   使用其中一个声明的枚举类型是作用域枚举,其枚举器作用域   枚举

答案 1 :(得分:10)

  

enum class,当然,但是什么是enum struct

enum class相同。

  

他们真的完全一样吗?

是。文档是正确的。

  

或者我错过了哪些差异?

没有。没有区别。

  

对同一事物有两种不同的语法有什么意义(如果它们是相同的)?

我还没有找到任何书面合理化的决定。标准和提案中都没有。有人可能会猜测它与class vs struct类密钥有某种对应关系。这是与指定template<class T>语法时相反的决定,其中struct不允许。