在支持强类型枚举的'现代'C ++中:类关键字是可选的吗?
我看到了定义枚举的代码:
RecyclerView
这是一个不同的东西,编译器的草率(VS 2015(MSVC 19))还是隐含enum SomeEnum: unsigned int {
VAL1 = 0,
VAL2 = 1,
// ...
};
关键字,如果枚举是强类型的?
答案 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,对于那些class
或struct
关键字是强制性的。
使用"继承"语法不是作用域枚举的一部分,它们也可用于普通unscoped enumerations。