Доклад

Киберпанк C++77. Применение рефлексии на коленке с конкретными примерами и сценариями

Представьте, вы описываете обычные C++ struct с данными, а в момент билда для них появятся реализации на выбор:

  • Сериализация: (JSON, QVariantMap, ...)
  • Операторы: (==, <)
  • JSON schema (например, для валидации)
  • Python-биндинги и многое другое...

C++ — мощный язык, но в плане статической рефлексии отстает от других популярных технологий. Пока ждем появления в стабильных версиях компилятора, состряпали свою реализацию сбоку, на базе clangAST, чтобы перестать писать кучу boilerplate. Местами использование похоже на Rust Derive, местами на Java-аттрибуты, выглядит симпатично.

В докладе будет много примеров модулей кодогенерации, которые мы используем у себя в продуктовом коде. Также проделаем полный путь от изменения исходного кода проекта до системы сборки и по итогу сгенерированного кода, который линкуется вместе с исходным, чтобы понять, как это работает.

Спикеры

Расписание