Я хотел бы отключить RTTI в моем проекте. Однако этот проект использует параметры программы Boost, которые сами зависят от Boost Any, который не поддерживает -fno-rtti.
Мне было интересно, есть ли какое-либо решение использовать Boost Program без RTTI? Определив макрос или не используя некоторые функции?
Спасибо
Ответ — нет». Boost.PO основан на Boost.Any, и пользователи не могут избежать этой зависимости. Boost.Any предоставляет основную структуру хранения Boost.PO, поэтому вы не можете скомпилировать какую-либо полезную часть PO без Any.
Ответ «возможно». Некоторые библиотеки Boost будут работать с отключенными исключениями, а некоторые — нет. То же самое для RTTI.
Я предлагаю вам проверить документацию на конкретные библиотеки повышения, которые вас интересуют.
Например, Boost.Array будет работать с отключенными исключениями, а Boost.Format — нет.
Если вы получаете такие сообщения, как, не можете использовать typeid с -fno-rtti, это, вероятно, будет при компиляции некоторой части Boost, которая требует RTTI. Где произойдет ошибка, подскажет какая библиотека (обычно).
Вы можете попробовать BOOST_NO_RTTI и BOOST_NO_TYPEID …
http://www.boost.org/doc/libs/1_46_1/libs/exception/doc/configuration_macros.html