Можно ли использовать параметры программы Boost без RTTI?

Я хотел бы отключить RTTI в моем проекте. Однако этот проект использует параметры программы Boost, которые сами зависят от Boost Any, который не поддерживает -fno-rtti.

Мне было интересно, есть ли какое-либо решение использовать Boost Program без RTTI? Определив макрос или не используя некоторые функции?

Спасибо

2 ответа

Решение

Ответ - нет". 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

Другие вопросы по тегам