查看enum
documentation时,我注意到一件事:
枚举键-enum
、enum class
(C11起)或enum struct
(C11起)之一
enum
和enum class
,当然可以,但是enum struct
是什么呢?
文档似乎说enum class
和enum struct
完全相同:
[...]* 作用域枚举 *(使用 * enum-key * enum class
或enum struct
声明)
- x1米11米1x|
class
* 名称 *{ enumerator = constexpr , enumerator = constexpr , ... }
- [...]
它们真的完全一样吗?或者有什么我错过的不同之处吗?为同一件事使用两种不同的语法有什么意义(如果它们是一样的)?
2条答案
按热度按时间t2a7ltrp1#
enum class
和enum struct
是相同的(强调是我的)。7.2枚举声明
...
2.... * 枚举密钥 *
enum class
和enum struct
是***语义等价的***;用这些中的一个声明的枚举类型是 * 作用域枚举 *,并且它的 * 枚举数 * 是 * 作用域枚举数 *。h5qlskok2#
enum class
,当然可以,但是enum struct
是什么呢?与
enum class
相同。它们真的一模一样吗?
是的。文件是正确的。
或者有什么我没注意到的不同?
不,没有区别。
对于同一个东西使用两种不同的语法有什么意义(如果它们是相同的)?
我还没有找到任何书面的合理解释。在标准和提案中都没有。有人可能会猜测它是
class
与struct
类键的某种对应物。这是一个与指定template<class T>
语法时相反的决定,在template<class T>
语法中不允许struct
。