【发布时间】:2013-04-19 06:54:02
【问题描述】:
新标准的特性对 C++11 中的 boost 库实现是否有重大影响?
鉴于存在可变参数模板,对库的boost::variant (BOOST_VARIANT_LIMIT_TYPES) 和boost::spirit 部分特别感兴趣。
有没有关于这方面的好文章?
【问题讨论】:
-
唯一的影响是一些东西可以从boost中删除(例如shared_ptr),以及实现
-
@BЈовић 我不认为这是准确的,boost::shared_ptr 仍然有更多功能,boost::regex 更多和不同的引导界面;此外,boost shared_ptr 与 PhoenixV2 的集成存在,但 std::[tr1::]shared_ptr 等不存在。
-
@BЈовић 这不是真的。使用 C++11,库的许多部分确实可以更容易实现,但可能不一定向后兼容 C++03 编译器。另一方面,有些部分需要改进,例如。支持仅移动类型。这对于变体来说尤其有趣 - 包含仅移动类型的变体应该在 C++11 中是可移动的。我知道 Boost.Optional 的一张票可以感知移动,所以他们似乎正在这样做:)
-
@Dukales Boost 专门设计为对 C++03 友好,因此大多数库默认情况下不使用 C++11 的“优点”。但是,例如,当您包含
fusion/adapted/std_tuple.hpp时,Fusion 将使用可变参数 - 当您从 boost::tuple 切换时,您实际上会看到编译时间减少(但是,请参见上文:boost 元组具有(远)更多功能,并且不同的界面,所以不要认为它是替代品) -
@ArneMertz 好点。我忘了搬家
标签: c++ boost c++11 boost-spirit boost-variant