有没有办法将所有枚举常量纳入范围?我指的不是类型,而是常量本身。
struct Foo {
enum Bar {
A = 1, B = 2, C = 4, D = 8
};
};
int main() {
using E = Foo;
int v = E::A | E::B | E::C | E::D;
// But is it possible to instead do...
using Foo::Bar::*; // (not real C++)
int v = A|B|C|D; // <-- all enum constants are brought into scope
}
Run Code Online (Sandbox Code Playgroud)
Run Code Online (Sandbox Code Playgroud)// This already works, of course. using E = Foo; Foo::Bar v = E::A | E::B | E::C | E::D;
嗯,不是真的,因为E::A | E::B | E::C | E::D是 anint并且您不能将 an 隐式转换int为 anenum。
但这并不能阻止您使用c++20(using enum除非您不能使用 C++20):
struct Foo {
enum Bar {
A = 1, B = 2, C = 4, D = 8
};
};
int main() {
using enum Foo::Bar; // (real C++20!)
Foo::Bar v = D;
}
Run Code Online (Sandbox Code Playgroud)