哪些运算符是为作用域枚举自动定义的?
对于无作用域枚举,答案是“大多数”,因为隐式转换为基础整数类型。但是,作用域枚举没有这种隐式转换。相反,为它们定义了一些但不是所有可用于无作用域枚举的运算符。
#include <iostream>
enum class Color{
Red,
Green,
Blue
};
int main()
{
std::cout << (Color::Red < Color::Green) << 'n';
// Fine, operator< is defined for Color
std::cout << (Color::Red + Color::Green == Color::Green) << 'n';
// no match for 'operator+'
}
我的猜测是关系运算符已定义,但算术运算符未定义,但我在 cppreference 页面上没有看到任何明确说明的内容,也没有进行实际的标准潜水以了解 C++ 对事情。