🪞 Reflection в C++26 — два оператора, которые меняют правила игры
Каждый C++ разработчик хоть раз писал
• Появляются два новых оператора:
•
• Практический пример — generic
• Для итерации используется
Вместо ручного
🍴 Подробнее
📍Навигация: Вакансии • Задачи • Собесы
Библиотека C/C++ разработчика
#буст
Каждый C++ разработчик хоть раз писал
switch-case для превращения enum в строку. C++26 предлагает забыть об этом — в стандарт входит compile-time reflection.• Появляются два новых оператора:
^^ (reflection operator) и [: :] (splicer). Первый превращает любую C++-сущность — тип, переменную, namespace, шаблон — в значение std::meta::info на этапе компиляции. Второй делает обратное: конвертирует std::meta::info обратно в тип, выражение или шаблон•
std::meta::info — это constexpr-хэндл к сущности. По сути, программа получает возможность исследовать собственную структуру в compile-time, не прибегая к макросам или кодогенерации• Практический пример — generic
to_enum_string(). Через std::meta::enumerators_of(^^T) получаем список enumerator-ов, итерируемся по ним с помощью template for, сплайсим значение через [:e:] и достаём имя через std::meta::identifier_of. Добавил новый enumerator — всё работает автоматически• Для итерации используется
std::define_static_array — отдельный proposal C++26, без которого развернуть expansion statement пока не получитсяВместо ручного
switch-case, который ломается при каждом добавлении нового значения, reflection даёт обобщённое решение на уровне языка. Никакой кодогенерации, никаких макросов — чистый constexpr-код с полной type safety.📍Навигация: Вакансии • Задачи • Собесы
Библиотека C/C++ разработчика
#буст
Please open Telegram to view this post
VIEW IN TELEGRAM
❤11😢2