没有明确范围的强类型枚举?

Tim*_*imo 5 c++ enums c++11

我想要强大的枚举类型.C++ 0x具有此功能,但不幸的是它们还需要显式范围:

enum class E {e1, e2, e3};
E x = E::e1; //OK
E y = e1; //error
Run Code Online (Sandbox Code Playgroud)

有时这是可取的,但有时它只是不必要地冗长.标识符本身可能足够唯一,或者枚举可能已经嵌套在类或命名空间中.

所以我正在寻找一种解决方法.在周围范围内声明枚举值的最佳方法是什么?

Bo *_*son 7

如果您希望在周围范围内显示值,只需添加几个常量:

enum class E {e1, e2, e3};

const E e1 = E::e1;
const E e2 = E::e2;
const E e3 = E::e3;
Run Code Online (Sandbox Code Playgroud)