Рефлексию таки приняли в C++26. Кто-нибудь уже щупал в компиляторах?
Рейтинг: 73% · 17 голосов
Войдите, чтобы голосовать
Голосовать «За» и «Против» могут только авторизованные пользователи. Войдите в свой аккаунт — или зарегистрируйтесь, это займёт минуту.
Нет аккаунта? Зарегистрироваться
Рефлексию таки приняли в C++26. Кто-нибудь уже щупал в компиляторах?
Новость не вчерашняя, P2996 проголосовали ещё прошлым летом в Софии, но руки потрогать дошли только сейчас. На годболте лежит форк clang-p2996 от Bloomberg, там работает почти всё из пейпера.
Написал enum_to_string без единого макроса: берёшь ^^MyEnum, идёшь по enumerators_of, сплайсишь через [: :]. Выглядит инопланетно, но это compile-time и без хаков. Потом собрал сериализацию структуры в json по членам, тоже чистый consteval, никакой кодогенерации.
Синтаксис с двумя каретами конечно на любителя. Но по сути это самое крупное изменение языка со времён C++11, имхо. Интересно, кто что уже пробовал и когда по вашим прикидкам это доедет до боевых gcc/clang/msvc.
Написал enum_to_string без единого макроса: берёшь ^^MyEnum, идёшь по enumerators_of, сплайсишь через [: :]. Выглядит инопланетно, но это compile-time и без хаков. Потом собрал сериализацию структуры в json по членам, тоже чистый consteval, никакой кодогенерации.
Синтаксис с двумя каретами конечно на любителя. Но по сути это самое крупное изменение языка со времён C++11, имхо. Интересно, кто что уже пробовал и когда по вашим прикидкам это доедет до боевых gcc/clang/msvc.
✔ Лучший ответ сформирован автоматически — cronk
Manuelriere писал(а):magic_enum (который сейчас парсит __PRETTY_FUNCTION__, это же стыд если задуматься) стыд стыдом, а этот хак шесть лет в проде у половины индустрии и никто не жалуется. вот что рефлексия реально починит, так это его ограничения: MAGIC_ENUM_RANGE в 128 значений, на котором народ регулярно ловит молчаливые сюрпризы с большими енумами. хоронить рано, но новый код на нем начинать …
- Manuelriere
- Сообщения: 58
- Зарегистрирован: 13 май 2026, 17:46
Re: Рефлексию таки приняли в C++26. Кто-нибудь уже щупал в компиляторах?
По срокам: в clang это пока ветка, в gcc 16 рефлексии нет, реально жди 17-18, msvc вообще тёмная лошадка. То есть прод-код с рефлексией это 2028-2029 минимум, а массово 2030.
Зато список того что она убьёт, греет душу: magic_enum (который сейчас парсит __PRETTY_FUNCTION__, это же стыд если задуматься), Boost.PFR, половина самописных кодогенераторов для сериализации. Всё это станет обычным constexpr кодом.
Зато список того что она убьёт, греет душу: magic_enum (который сейчас парсит __PRETTY_FUNCTION__, это же стыд если задуматься), Boost.PFR, половина самописных кодогенераторов для сериализации. Всё это станет обычным constexpr кодом.
Re: Рефлексию таки приняли в C++26. Кто-нибудь уже щупал в компиляторах?
потыкал этот clang-p2996 на годболте после треда. enum_to_string ладно, игрушка, а вот define_aggregate реально выносит мозг: генеришь структуру прямо в compile-time и обычный код ее видит. собрал маппинг конфига в структуру за вечер, ни кодогена, ни макросов. но компиляция ощутимо тяжелеет, мой пример с рефлексией собирался секунды три против полсекунды без нее. на проекте в миллион строк будет весело
- silentsegfault
- Сообщения: 10
- Зарегистрирован: 18 май 2026, 21:12
Re: Рефлексию таки приняли в C++26. Кто-нибудь уже щупал в компиляторах?
@allyssa, reflexpr выкинули не от хорошей жизни. одиночный ^ конфликтует с блоками Apple в objective-c++, поэтому и удвоили до ^^. а reflexpr(T) комитет забраковал как слишком многословный: мол, рефлексию будут писать часто, нужен короткий оператор. так что брейнфак осознанный. после operator<=> уже ничего не страшно, привыкнешь
Re: Рефлексию таки приняли в C++26. Кто-нибудь уже щупал в компиляторах?
✔ Лучший ответ — сформирован автоматически
стыд стыдом, а этот хак шесть лет в проде у половины индустрии и никто не жалуется. вот что рефлексия реально починит, так это его ограничения: MAGIC_ENUM_RANGE в 128 значений, на котором народ регулярно ловит молчаливые сюрпризы с большими енумами. хоронить рано, но новый код на нем начинать после 26го уже странноManuelriere писал(а):magic_enum (который сейчас парсит __PRETTY_FUNCTION__, это же стыд если задуматься)
Поделиться темой:
✈ Telegram
VK
- Похожие темы
-
- Год на App Router в Next.js — кто-нибудь не пожалел? У нас откат к Pages
20 ответов · 4942 просмотров
-
-
-
- Раздул CLAUDE.md до 400 строк, и стало ХУЖЕ — кто-нибудь объяснит почему
10 ответов · 1260 просмотров
-
-
Кто сейчас на конференции
Сейчас этот форум просматривают: нет зарегистрированных пользователей и 1 гость