以下代码(也在ideone上)似乎不应该编译,但在MSVC 2008和GCC 4.8.2
上#include<iostream>
struct Base
{
enum State { ON = 11 , OFF = 22 , STANDBY = 33 };
};
struct Derived : Base
{
enum State { ON = ON , OFF = OFF }; // Huh?
};
int main()
{
std::cout << Derived::ON << std::endl;
}
是否符合标准?
答案 0 :(得分:1)
enum State { ON = ON , OFF = OFF }; // Huh?
^^
此时派生的重新定义尚未完成,因此使用的ON将来自Base。