Если нужно версии добавлять на контракты, то можно использовать аннотации рефлексии что поиде полностью покрывает ваши требования. Для реализации уже функций внутри структуры увы и ах, выносим за класс. А так можно тащить в проект тот же glaze или boost::pfr и не париться
я и говорю что qml(JSV4). Немного юзаьельным он стал только в Qt6. А могли бы просто развивать деларативный подход для написания gui в виджетах ( к примеру у imgui выходит неплохо это)
Как программист на Qt скажу, а когда будет поддержка с++20 модулей будет? ой никогда так как Q_OBJECT макрос. А рефлексия это путь ( пока еще не до конца но путь)
Qt честно да прогрессивный, но сейчас очень сильно отстал, также забил вообще про написание ui через с++ и ринулись разивать кастрированый js
непонятно зачем люди сложно пишут на с++ если можно писать сильно проще. стреляют в колено, когда пишут на с++ образца старых годов или используя синтаксис С
Единственное замечание, что модули пока что нишевая штука, хоть на дворе 2026-ой. Вон XCode до сих пор их не поддерживает.
Ну буст часть своих либ первел на модули, а где-то еще вносится поддержка. Да переход очень тяжелый на с++ моудли, но после опыта написания на модулях, обратно очень неприятно переходить
Там же подвох в том что артефакты модулей для сборки иначе собираются ( в отличии от стандарных cpp ) , поэтому и спрашиваю как в этой системе сборки работает поддержка модулей
Linux ядро буквально живет на том же с++ но в синтаксие С. Те же абстракции, тот же rtti и vtable, обработка исключений. В ядро с++ не пустил фанатизм и то что с++ был сильно позже стандартизирован чем С
это только один из плюсов, есть и другие два - контроль над экспортом ( что не дают инклуды, благодаря чему есть namespace detail) и просто другая организация кода. что по скорости то gcc сейчас в 3 раза медленее билдит модули чем кланг
С gcc да согласен несколько сложнее жить. gcc в некоторых аспектах строже clang и сильно фанатичнее следует стандарту ( разработчики LLVM можно сказать оставили допущения на переходный период), плюс clangd сейчас умеет работать только clang модулями ( за то оч хорошо сейчас работает, проверял на macos и linux)
у буста немного другой подход к модуляризаци своих либ, не через такую прослойку. Посмотрите доклад антона полухина с С++ZeroCostConf 2025 ну или посмотрите на уже модулязирование либы буста. И пропробуйте модуляризировать в их стиле ( часть либ уже модулязирована)
Если нужно версии добавлять на контракты, то можно использовать аннотации рефлексии что поиде полностью покрывает ваши требования. Для реализации уже функций внутри структуры увы и ах, выносим за класс. А так можно тащить в проект тот же glaze или boost::pfr и не париться
я и говорю что qml(JSV4). Немного юзаьельным он стал только в Qt6. А могли бы просто развивать деларативный подход для написания gui в виджетах ( к примеру у imgui выходит неплохо это)
Так в анотации должно быть что-то что может быть вычеслено на этапе компиляции. string_view является contexpr же
Как программист на Qt скажу, а когда будет поддержка с++20 модулей будет? ой никогда так как Q_OBJECT макрос. А рефлексия это путь ( пока еще не до конца но путь)
Qt честно да прогрессивный, но сейчас очень сильно отстал, также забил вообще про написание ui через с++ и ринулись разивать кастрированый js
непонятно зачем люди сложно пишут на с++ если можно писать сильно проще. стреляют в колено, когда пишут на с++ образца старых годов или используя синтаксис С
Ну буст часть своих либ первел на модули, а где-то еще вносится поддержка. Да переход очень тяжелый на с++ моудли, но после опыта написания на модулях, обратно очень неприятно переходить
напомню что еще стоит учитывать, что может подключатся import std из 23 стандарта
И среди всех этих бибилотек только argparse и cli11 умeют в модули. Вы ввели 20 стандарт в своей либе, но не сделали это без уважения.
Там же подвох в том что артефакты модулей для сборки иначе собираются ( в отличии от стандарных cpp ) , поэтому и спрашиваю как в этой системе сборки работает поддержка модулей
что там с поддержкой модулей с++20?
Linux ядро буквально живет на том же с++ но в синтаксие С. Те же абстракции, тот же rtti и vtable, обработка исключений. В ядро с++ не пустил фанатизм и то что с++ был сильно позже стандартизирован чем С
Так код с auto_ptr не скомпилируется с включенным С++17 ( как и throw() в конце объявлении функции)
Поэтому в модулях без экспортирования макросов. Ломают все
раз было 8 редакций то скорее всего не все так просто и проблем было много под капотом ( а не просто вид функции)
это только один из плюсов, есть и другие два - контроль над экспортом ( что не дают инклуды, благодаря чему есть namespace detail) и просто другая организация кода. что по скорости то gcc сейчас в 3 раза медленее билдит модули чем кланг
ну Антон один из основных майнтейнеров буста, так что как минимум ему можно написать
С gcc да согласен несколько сложнее жить. gcc в некоторых аспектах строже clang и сильно фанатичнее следует стандарту ( разработчики LLVM можно сказать оставили допущения на переходный период), плюс clangd сейчас умеет работать только clang модулями ( за то оч хорошо сейчас работает, проверял на macos и linux)
у буста немного другой подход к модуляризаци своих либ, не через такую прослойку. Посмотрите доклад антона полухина с С++ZeroCostConf 2025 ну или посмотрите на уже модулязирование либы буста. И пропробуйте модуляризировать в их стиле ( часть либ уже модулязирована)
Можно скомпилировать код с использованием с++26 и уже в коде будет меньше UB.
Поздравляю команду PVS-Studio с этим достижением, это очень значимое событие