gpt4 book ai didi

c++ - 为什么比较范围枚举是合法的

转载 作者:行者123 更新时间:2023-12-04 12:52:59 24 4
gpt4 key购买 nike

这个问题在这里已经有了答案:





Why does the scoped enum support operator '<' by default?

(2 个回答)


6 天前关闭。




尽管范围枚举( 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++ 标准?

最佳答案

这在 comparison operators 中有描述

Arithmetic comparison operators

If the operands have arithmetic or enumeration type (scoped or unscoped), usual arithmetic conversions are performed on both operands following the rules for arithmetic operators. The values are compared after conversions:


所以除了算术类型(包括整型)之外,还明确提到了作用域和非作用域枚举类型。

关于c++ - 为什么比较范围枚举是合法的,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/69753109/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com