C++ 枚举结构和枚举类之间有什么区别?

C++ 枚举结构和枚举类之间有什么区别?,c++,c++11,enums,C++,C++11,Enums,看着照片,我注意到一件事: 枚举键-从C++11开始的枚举,枚举类,或从C++11开始的枚举结构之一 枚举和枚举类,当然可以,但是什么是枚举结构 文档似乎说enum class和enum struct完全相同: […]作用域枚举(使用枚举键枚举类或枚举结构声明) enum结构|classname{enumerator=constexpr,enumerator=constexpr,…} [……] 它们真的完全一样吗?还是我遗漏了什么差异?同一事物有两种不同语法有什么意义(如果它们相同的话?e

看着照片,我注意到一件事:

枚举键-从C++11开始的
枚举
枚举类
,或从C++11开始的
枚举结构
之一

枚举
枚举类
,当然可以,但是什么是
枚举结构

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

[…]作用域枚举(使用枚举键
枚举类
枚举结构
声明)


  • enum结构
    |
    class
    name
    {enumerator=constexpr,enumerator=constexpr,…}
  • [……]

它们真的完全一样吗?还是我遗漏了什么差异?同一事物有两种不同语法有什么意义(如果它们相同的话?

enum class
enum struct
是相同的(强调我的意思)

7.2枚举声明 2.枚举键
enum class
enum struct
在语义上是等价的
; 使用其中之一声明的枚举类型是作用域枚举,其枚举数是作用域的 统计员

enum类
,当然可以,但是什么是
enum结构

与枚举类相同

它们真的完全一样吗

对。文档是正确的

还是我遗漏了什么差异

不,没有区别

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


我还没有找到任何书面的理由来解释这个决定。标准和提案中没有任何内容。有人可能会猜测它是
class
vs
struct
类键的某种对应物。这与指定
template
语法时的决定相反,此处不允许使用
struct

不同时包含这两种语法有什么意义?在C++中,给定两个结构和类通常是等价的(除了公有/私有)是有意义的,但是<>代码>模板<代码>是允许的,并且也等价于<代码>模板< /代码>!标准在这两点上相当混乱,不是吗?@ZeeByeZon:No.
class
struct
在类型声明中是近义词是很常见的。唯一的区别是其成员的默认公共/私有访问权限。由于作用域枚举没有私有成员,因此两者之间的唯一区别是没有意义的。@Nicolas Bolas不仅仅是成员。它还影响继承。