【发布时间】:2017-07-10 14:53:31
【问题描述】:
为什么下面的代码编译没有任何错误?
enum class Enumeration;
void func()
{
auto enumeration = static_cast<Enumeration>(2);
auto value = static_cast<int>(enumeration);
}
【问题讨论】:
-
有什么理由不应该这样做吗?
-
你已经声明了一个:“不透明的枚举声明:定义了枚举类型而不是它的枚举数:在这个声明之后,类型是一个完整的类型并且它的大小是已知的。” 来源:en.cppreference.com/w/cpp/language/enum
-
标准允许这样做。它可能不是非常有用。另请参阅此处最初的用途:stackoverflow.com/a/18338930/1132334
-
是因为
[dcl.enum]/3,但不知道动机是什么。
标签: c++