由于未知原因,我无法从constexpr值初始化枚举值。这是我的代码:
enum class Enum: unsigned int; //Forward declaration
constexpr Enum constant = static_cast<Enum>(2);
enum class Enum: unsigned int {
A = 0,
B = 1,
C = B, //This works
D = constant, //This FAILS
E = static_cast<unsigned int>(constant), //This works
F = Enum::B //This works
};
Run Code Online (Sandbox Code Playgroud)
我无法理解的是为什么我可以写C = B,但不能写D = constant(B并且constant具有相同的类型!)
我仍然可以做E = static_cast<unsigned int>(constant),但它太冗长了(在我现实生活中的代码中,每个枚举值都是由constexpr函数调用初始化的,很难放在static_cast<unsigned int>任何地方)。