Рефлексию таки приняли в C++26. Кто-нибудь уже щупал в компиляторах?

Рейтинг: 73% · 17 голосов
Python, Rust, Go, C++, C#, Java, Kotlin: синтаксис, паттерны проектирования, производительность, многопоточность и сравнение языков.
Ответить
Аватара пользователя
infern
Сообщения: 87
Зарегистрирован: 11 май 2026, 10:23

Рефлексию таки приняли в C++26. Кто-нибудь уже щупал в компиляторах?

Сообщение infern »

Новость не вчерашняя, P2996 проголосовали ещё прошлым летом в Софии, но руки потрогать дошли только сейчас. На годболте лежит форк clang-p2996 от Bloomberg, там работает почти всё из пейпера.

Написал enum_to_string без единого макроса: берёшь ^^MyEnum, идёшь по enumerators_of, сплайсишь через [: :]. Выглядит инопланетно, но это compile-time и без хаков. Потом собрал сериализацию структуры в json по членам, тоже чистый consteval, никакой кодогенерации.

Синтаксис с двумя каретами конечно на любителя. Но по сути это самое крупное изменение языка со времён C++11, имхо. Интересно, кто что уже пробовал и когда по вашим прикидкам это доедет до боевых gcc/clang/msvc.
👍1 ❤️1 🔥 😄1 🤔
✔ Лучший ответ сформирован автоматически — cronk
Manuelriere писал(а):magic_enum (который сейчас парсит __PRETTY_FUNCTION__, это же стыд если задуматься) стыд стыдом, а этот хак шесть лет в проде у половины индустрии и никто не жалуется. вот что рефлексия реально починит, так это его ограничения: MAGIC_ENUM_RANGE в 128 значений, на котором народ регулярно ловит молчаливые сюрпризы с большими енумами. хоронить рано, но новый код на нем начинать …
Перейти к ответу →
Аватара пользователя
lawlorg
Сообщения: 30
Зарегистрирован: 16 май 2026, 06:26

Re: Рефлексию таки приняли в C++26. Кто-нибудь уже щупал в компиляторах?

Сообщение lawlorg »

у нас на проде gcc 9 и стандарт C++14, переезд на 17 обсуждают второй год. рефлексию я увижу на пенсии. так что радуйтесь там у себя в будущем
👍1 ❤️1 🔥1 😄1 🤔
Аватара пользователя
elixirpro
Сообщения: 9
Зарегистрирован: 24 май 2026, 08:42

Re: Рефлексию таки приняли в C++26. Кто-нибудь уже щупал в компиляторах?

Сообщение elixirpro »

Самое интересное что будет с Qt. moc как отдельный шаг сборки всех бесил лет двадцать, на рефлексии QMetaObject напрашивается сам собой. Если Qt 7 это сделает, плюс один гигантский костыль уйдёт из индустрии.
👍 ❤️1 🔥 😄1 🤔
Аватара пользователя
allyssa
Сообщения: 20
Зарегистрирован: 12 май 2026, 10:17

Re: Рефлексию таки приняли в C++26. Кто-нибудь уже щупал в компиляторах?

Сообщение allyssa »

два карета бл. ^^T. кто это придумал и почему не reflexpr как в старых пейперах. теперь до конца жизни писать операторы как в брейнфаке
👍 ❤️ 🔥 😄 🤔
Аватара пользователя
Manuelriere
Сообщения: 58
Зарегистрирован: 13 май 2026, 17:46

Re: Рефлексию таки приняли в C++26. Кто-нибудь уже щупал в компиляторах?

Сообщение Manuelriere »

По срокам: в clang это пока ветка, в gcc 16 рефлексии нет, реально жди 17-18, msvc вообще тёмная лошадка. То есть прод-код с рефлексией это 2028-2029 минимум, а массово 2030.

Зато список того что она убьёт, греет душу: magic_enum (который сейчас парсит __PRETTY_FUNCTION__, это же стыд если задуматься), Boost.PFR, половина самописных кодогенераторов для сериализации. Всё это станет обычным constexpr кодом.
👍 ❤️2 🔥 😄 🤔
Аватара пользователя
tommee
Сообщения: 64
Зарегистрирован: 11 май 2026, 02:37

Re: Рефлексию таки приняли в C++26. Кто-нибудь уже щупал в компиляторах?

Сообщение tommee »

туда же ещё контракты вкатили, c++26 вообще жирнейший стандарт выходит. посмотрим что комитет успеет довести, а что как обычно отложат в 29й
👍1 ❤️ 🔥1 😄1 🤔
Аватара пользователя
python5
Сообщения: 6
Зарегистрирован: 16 май 2026, 11:24

Re: Рефлексию таки приняли в C++26. Кто-нибудь уже щупал в компиляторах?

Сообщение python5 »

потыкал этот clang-p2996 на годболте после треда. enum_to_string ладно, игрушка, а вот define_aggregate реально выносит мозг: генеришь структуру прямо в compile-time и обычный код ее видит. собрал маппинг конфига в структуру за вечер, ни кодогена, ни макросов. но компиляция ощутимо тяжелеет, мой пример с рефлексией собирался секунды три против полсекунды без нее. на проекте в миллион строк будет весело
👍 ❤️ 🔥 😄 🤔1
Аватара пользователя
silentsegfault
Сообщения: 10
Зарегистрирован: 18 май 2026, 21:12

Re: Рефлексию таки приняли в C++26. Кто-нибудь уже щупал в компиляторах?

Сообщение silentsegfault »

@allyssa, reflexpr выкинули не от хорошей жизни. одиночный ^ конфликтует с блоками Apple в objective-c++, поэтому и удвоили до ^^. а reflexpr(T) комитет забраковал как слишком многословный: мол, рефлексию будут писать часто, нужен короткий оператор. так что брейнфак осознанный. после operator<=> уже ничего не страшно, привыкнешь
👍 ❤️2 🔥2 😄1 🤔
Аватара пользователя
cronk
Сообщения: 16
Зарегистрирован: 17 май 2026, 08:27

Re: Рефлексию таки приняли в C++26. Кто-нибудь уже щупал в компиляторах?

Сообщение cronk »

✔ Лучший ответ — сформирован автоматически
Manuelriere писал(а):magic_enum (который сейчас парсит __PRETTY_FUNCTION__, это же стыд если задуматься)
стыд стыдом, а этот хак шесть лет в проде у половины индустрии и никто не жалуется. вот что рефлексия реально починит, так это его ограничения: MAGIC_ENUM_RANGE в 128 значений, на котором народ регулярно ловит молчаливые сюрпризы с большими енумами. хоронить рано, но новый код на нем начинать после 26го уже странно
👍 ❤️1 🔥2 😄1 🤔
Ответить
Поделиться темой: ✈ Telegram VK

Вернуться в «Языки программирования»

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и 1 гость