哪些运算符是为作用域枚举自动定义的?

对于无作用域枚举,答案是“大多数”,因为隐式转换为基础整数类型。但是,作用域枚举没有这种隐式转换。相反,为它们定义了一些但不是所有可用于无作用域枚举的运算符。

#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++ 对事情。

以上是哪些运算符是为作用域枚举自动定义的?的全部内容。
THE END
分享
二维码
< <上一篇
下一篇>>