Тип доклада: Доклад

Почти полноценный RTTI с контролируемым overhead

  • Доклад на русском языке
Презентация pdf

Почему в C++ до сих пор продолжают делать «свой» RTTI в обход существующего стандартного решения? Причина в том, что далеко не всегда и не для всех классов этот механизм востребован. И иногда он медленный. А еще у вас нет полноценного доступа к иерархии классов.

Те же, кто пишет свой RTTI сталкиваются вот с такими проблемами:

  1. При добавлении классов приходится писать много дополнительного кода.
  2. Как правило, в «своем» RTTI нет возможности получить доступ к иерархии классов, а иногда это было бы очень удобно.
  3. В каких-то случаях (например, для паттерна Visitor) приходится даже использовать генераторы программного кода (см. Clang AST Visitor).

Используя С++17 (с заделом на C++20) и немного всяких хитростей, можно почти полностью уйти от этих проблем:

  1. Дополнительный код по-прежнему нужен, но его все же теперь меньше, чем в других решениях.
  2. Имея указатель на базовый класс, вы не только можете узнать, что это за тип, но еще и получить доступ к иерархии классов.
  3. Посмотрим, сможем ли мы сделать Visitor без генерации кода?

Доклад будем полезен тем, кто небезразличен к таким вещам, как «стирание типов» и RTTI в C++.

  • #c++17

Спикеры

Приглашенные эксперты

Расписание