Pour explorer un peu la réflexion en c++26, j'ai fait ce bout (chez moi) de code
gcc:
https://godbolt.org/z/hMWojG56s
clang (les deux define ne sont pas gérés par clang):
https://godbolt.org/z/hK7x4YvsP
L'idée de base c'est de parcourir les membres d'une classe et de leur affecter une valeur.

Compiler Explorer - C++ (x86-64 gcc (trunk))
struct Point { int x; int y; }; int main() { #if defined(__cpp_impl_reflection) std::cout << "__cpp_impl_reflection is defined." << std::endl; #endif #if defined(__cpp_lib_reflection) std::cout << "__cpp_lib_reflection is defined." << std::endl; #endif #if defined(__cpp_impl_reflection) && defined(__cpp_lib_reflection) constexpr std::meta::info point_type = ^^Point; constexpr auto name = std::meta::identifier_of(point_type); std::cout << "name: " << name << '\n'; using dummy_point_type = [:point_type:]; dummy_point_type point{.x=0, .y=0}; auto index = 0; template for(constexpr std::meta::info member : std::define_static_array(nonstatic_data_members_of(point_type, std::meta::access_context::current()))) { constexpr auto member_type = ^^member; constexpr auto member_name = std::meta::identifier_of(member); point.[:member:] = ++index; std::cout << member_name << " = " << point.[:member:] << '\n'; } #endif std::cout << std::endl; return 0; }