You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

C++26反射提案是否支持枚举类型遍历?

C++26反射提案中的枚举遍历支持

是的,C26的核心反射提案(以P2996系列为基础,已纳入C26工作草案)提供了遍历枚举类型枚举器的能力。

基本用法

通过反射库的reflect接口获取枚举类型的元对象,再通过元对象的成员接口获取枚举器列表,即可实现遍历。示例代码如下:

#include <reflect>
#include <iostream>

enum class Color { Red, Green, Blue };

int main() {
    // 获取Color枚举的元对象
    constexpr auto enum_meta = std::reflect(Color);
    
    // 遍历所有枚举器
    for (const auto& enumerator : enum_meta.enumerators()) {
        // 获取枚举器名称和对应值
        std::cout << "名称: " << enumerator.name() 
                  << ", 值: " << enumerator.value() << '\n';
    }
    return 0;
}

关键细节

  • 遍历得到的枚举器元对象可通过name()获取标识符字符串,通过value()获取对应的整数值。
  • 该能力同时支持传统不限定枚举(enum)和强类型枚举(enum class)。
  • 目前部分编译器的预览版本已提供实验性支持(如GCC 14+)。

内容的提问来源于stack exchange,提问作者SpeakX

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.20 13:25:53