C++ Reflection Proposal

21 Mar 2026

[ c++  c++26  ]

Herb Sutter’s examples

Inbal Levi’s examples

Misc C++ Reflection examples

#include <iostream>
#include <meta>

template <typename E>
struct enum_item {
    std::string_view name;
    E value;
};

template <typename E>
consteval auto get_enum_data() {
    std::array<enum_item<E>, std::meta::enumerators_of(^^E).size()> result;
    int k = 0;
    for (auto mem : std::meta::enumerators_of(^^E))
        result[k++] = enum_item<E>{std::meta::identifier_of(mem),
                                   std::meta::extract<E>(mem)};
    return result;
}

enum class Color { Red, Blue, Green };

int main() {
    std::cout << "members of " << std::meta::identifier_of(^^Color) << '\n';
    for (auto x : get_enum_data<Color>()) {
        std::cout << "  " << x.name << " = " << (long)x.value << '\n';
    }
}

References