新しいC++(C++0xまたはC++11)には、新しい種類の列挙型、つまり名前が(とりわけ)列挙型にスコープされる「列挙型クラス」があります。
enum class E {
VAL1, VAL2
};
void fun() {
E e = E::VAL1; // Qualified name
}
ただし、特定のスコープで非修飾名を選択的に使用できるかどうか疑問に思います。何かのようなもの:
void fun() {
using E::*;
E e = VAL1;
switch (e) {
case VAL2: ...
using E::VAL1
1つの値を記述して取得できるようです。しかし、より大きな列挙型のすべての値に対してそれを実行したくはありません。