История изменений
Исправление snizovtsev, (текущая версия) :
Все плюсовики когда-то через это желание проходят. Кратко: нет. Варианты:
- Описывать структуры на другом языке, генерировать по ним плюсовый код (аки protobuf и компания);
- Описывать структуры хитрыми макросами, которые используют «лямбда-макрос» внутри. Это путь boost::hana и подобных;
- Страдать, писать кучу boilerplate руками или макросами vim. Создаёт видимость бурной деятельности и много строчек однотипного кода;
- Молиться, когда стандартизируют reflection, его нормально реализуют компиляторы, и новый стандарт разрешат использовать в проекте;
- Написать плагин для gcc/clang, как это сделали в https://www.codesynthesis.com/products/odb/
- Не использовать C++ там, где такая необходимость возникает. Написать биндинги к какому-нибудь питону, и заниматься интроспекцией уже там.
Исходная версия snizovtsev, :
Все плюсовики когда-то через это желание проходят. Кратко: нет. Варианты:
- Описывать структуры на другом языке, генерировать по ним плюсовый код (аки protobuf и компания);
- Описывать структуры хитрыми макросами, которые используют «лямбда-макрос» внутри. Это путь boost::hana и подобных;
- Страдать, писать кучу boilerplate руками или макросами vim. Создаёт видимость бурной деятельности и много строчек однотипного кода;
- Молиться, когда стандартизируют reflection, его нормально реализуют компиляторы, и новый стандарт разрешат использовать в проекте;
- Написать плагин для gcc/clang, как это сделали в https://www.codesynthesis.com/products/odb/