Степан Дятковский - Почти полноценный RTTI с контролируемым overhead

  Рет қаралды 85

C++ User Group

C++ User Group

17 күн бұрын

Ближайшая конференция: С++ 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

Пікірлер
How many pencils can hold me up?
00:40
A4
Рет қаралды 17 МЛН
Be kind🤝
00:22
ISSEI / いっせい
Рет қаралды 18 МЛН
КАК СПРЯТАТЬ КОНФЕТЫ
00:59
123 GO! Shorts Russian
Рет қаралды 2,8 МЛН
Помни одну цифру - не заблудишься в лесу!!!
13:31
Василий Нестеров
Рет қаралды 2,9 МЛН
МОЖНО ЛИ заряжать AirPods в чехле 🧐😱🧐 #airpods #applewatch #dyson
0:22
Apple_calls РЕПЛИКА №1 В РФ
Рет қаралды 20 М.
How much charging is in your phone right now? 📱➡️ 🔋VS 🪫
0:11
Эффект Карбонаро и бумажный телефон
1:01
История одного вокалиста
Рет қаралды 2,6 МЛН
Куда пропал 3D Touch? #apple #iphone
0:51
Не шарю!
Рет қаралды 608 М.