是否可以在没有RTTI的情况下使用Boost程序选项?

时间:2013-01-28 07:24:11

标签: c++ rtti boost-program-options boost-any

我想在我的项目中禁用RTTI。但是,该项目使用Boost Program Options,它本身依赖于不支持-fno-rtti的Boost Any。

我想知道是否有任何解决方案可以在没有RTTI的情况下使用Boost程序?通过定义宏或不使用某些功能?

由于

2 个答案:

答案 0 :(得分:4)

答案是“不”。 Boost.PO基于Boost.Any,目前用户无法避免这种依赖性。 Boost.Any给出了Boost.PO的主存储结构,因此你不能在没有Any的情况下编译PO的一些有用部分。

答案 1 :(得分:1)

答案是“也许”。一些boost库可以在禁用异常时使用 - 有些则不会。同样适用于RTTI。

我建议您查看您感兴趣的特定boost库的文档。

例如,Boost.Array将禁用异常,但Boost.Format不会。

如果您收到的消息不能使用带有-fno-rtti的typeid,那么可能在编译需要RTTI的Boost的某些部分时。发生错误的地方会告诉你哪个库(通常)。

您可以尝试BOOST_NO_RTTI和BOOST_NO_TYPEID ......

http://www.boost.org/doc/libs/1_46_1/libs/exception/doc/configuration_macros.html