LINUX.ORG.RU

История изменений

Исправление snizovtsev, (текущая версия) :

Все плюсовики когда-то через это желание проходят. Кратко: нет. Варианты:

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

Исходная версия snizovtsev, :

Все плюсовики когда-то через это желание проходят. Кратко: нет. Варианты:

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