虽然作用域枚举(enum class
)不能隐式转换为整数类型,但我仍然可以通过 <
进行比较(在 GCC 10.3 上)。
#include <algorithm>
#include <iostream>
enum class Colours {
Red = 0,
Green = 1,
Blue = 2
};
int main() {
std::cout << (std::min(Colours::Blue, Colours::Red) < Colours::Green) << std::endl;
return 0;
}
为什么这是标准行为(如果是的话)?
你能给我提供一个到 cppreference.com 或 C++ 标准的参考文献吗?
Red = 0, Green = 1, Blue = 2
可以写成Red, Green, Blue
。如果第一个枚举值没有初始化程序,它将获得值0。任何其他没有初始化程序的枚举器都会获得比其前任多1的值。 - Pete Becker