不幸的是,我在常规enum上迭代的所有标准技术都不能在enum classes上工作,因为枚举类不会隐式转换为整数。
而不是我如何在枚举上迭代?的复制,因为我在询问enum class (即:强类型枚举),而他们询问的是常规enum (即:弱类型枚举)。
发布于 2021-10-29 01:58:49
另一种选择是使用C++20范围组成enum范围:
constexpr inline auto enum_range = [](auto front, auto back) {
return std::views::iota(std::to_underlying(front), std::to_underlying(back) + 1)
| std::views::transform([](auto e) { return decltype(front)(e); });
};然后,您可以像这样迭代enum:
enum class color { red, yellow, green, blue };
for (const auto e : enum_range(color::red, color::blue))
// ...https://stackoverflow.com/questions/69762598
复制相似问题