Рет қаралды 85
Ближайшая конференция: С++ Russia 2024, 24 мая (online), 2-3 июня (offline, Москва)
Подробности и билеты: jrg.su/W8skjE
- -
Почему в C++ до сих пор продолжают делать «свой» RTTI в обход существующего стандартного решения? Причина в том, что далеко не всегда и не для всех классов этот механизм востребован. И иногда он медленный. А еще у вас нет полноценного доступа к иерархии классов.
Те же, кто пишет свой RTTI сталкиваются вот с такими проблемами:
- При добавлении классов приходится писать много дополнительного кода.
- Как правило, в «своем» RTTI нет возможности получить доступ к иерархии классов, а иногда это было бы очень удобно.
- В каких-то случаях (например, для паттерна Visitor) приходится даже использовать генераторы программного кода (см. Clang AST Visitor).
Используя С++17 (с заделом на C++20) и немного всяких хитростей, можно почти полностью уйти от этих проблем:
1. Дополнительный код по-прежнему нужен, но его все же теперь меньше, чем в других решениях.
2. Имея указатель на базовый класс, вы не только можете узнать, что это за тип, но еще и получить доступ к иерархии классов.
3. Посмотрим, сможем ли мы сделать Visitor без генерации кода?
Доклад будем полезен тем, кто небезразличен к таким вещам, как «стирание типов» и RTTI в C++.
Скачать презентацию с сайта С++ Russia - jrg.su/arzPQy
#c++17