强类型枚举 - `class`关键字可选?

时间:2018-01-05 07:48:03

标签: c++11 c++14

在支持强类型枚举的'现代'C ++中:类关键字是可选的吗?

我看到了定义枚举的代码:

RecyclerView

这是一个不同的东西,编译器的草率(VS 2015(MSVC 19))还是隐含enum SomeEnum: unsigned int { VAL1 = 0, VAL2 = 1, // ... }; 关键字,如果枚举是强类型的?

3 个答案:

答案 0 :(得分:2)

问题中的代码声明了一个普通的无范围枚举,但其基础类型是固定的。所以它与enum class不同,因为它仍然没有为其枚举器引入范围。

答案 1 :(得分:1)

由于c++11甚至普通枚举(仍然存在)都可以接受基础类型规范。 See here.

  

enum-key attr(可选)标识符(可选) enum-base(可选)(C ++ 11) {enumerator-list(optional)}

强调我的

因此,enum不是enum class,而是enum-base规范。

答案 2 :(得分:1)

你叫什么"强类型枚举"的确名为scoped enumerations,对于那些classstruct关键字是强制性的。

使用"继承"语法不是作用域枚举的一部分,它们也可用于普通unscoped enumerations

相关问题