C++ using-declaration with enums:如何导入所有枚举项?

Haz*_*oke 4 c++ enums using

这是一个代码片段来演示我的问题.

namespace N{
    enum E { A, B, C, D };
}

int main(){
    using N::E;
    E e = A; // syntax error: 'A' is not declared
}
Run Code Online (Sandbox Code Playgroud)

最后一行给出了语法错误.我想使用的名称N::A,N::B,N::C以及N::D在没有命名空间限定的主要功能N::.但我希望做以下两件事情

(1)我不想说using namespace N,因为那将导入N中的其他所有内容.

(2)我不想说using N::A,using N::B等了枚举的每一个成员.因为那时如果我想修改枚举,我也必须改变我的主要功能.更不用说额外的打字是乏味且容易出错的.

我试着自己寻找答案,但不能.任何帮助表示赞赏.

asc*_*ler 7

如果您可以更改E已定义的标头,请尝试使用内联命名空间.

namespace N {
    inline namespace Enums {
        enum E { A, B, C, D };
    }
}

int main() {
    using namespace N::Enums;
    E e = A;
}
Run Code Online (Sandbox Code Playgroud)

内联命名空间中的所有名称都在封闭的命名空间中可见,N就像内联命名空间不存在一样,但这允许您导入所有名称和所需的名称.