Я обновляю старый код C++.
Я натолкнулся на следующее:
#if defined( _CPPRTTI ) || defined( __GNUG__ )
const char* default_name{ (typeid(FooClass)).name() };
#else
const char* default_name{ "unknown" };
#endif
RTTI - это информация о времени выполнения, похоже, что она имеет дело с некоторыми компиляторами, которые не поддерживали typeid().
Но этот код составляет> 15 лет.
Можно ли предположить, что поддержка RTTI существует для C++ 11?
Некоторые компиляторы позволяют отключить поддержку RTTI во время компиляции. Например, см. Visual C++ /GR- и GCC -fno-rtti.
Если вы не используете RTTI в своей программе (typeid
, dynamic_cast
и т.д.), typeid
отключение RTTI во время компиляции может существенно уменьшить размер финального двоичного файла.