哪些Boost库利用Move Semantics

mar*_*ark 12 c++ boost rvalue-reference move-semantics c++11

Rvalue引用和Move语义是一个主要的C++ 11特性,它可以通过减少不必要的副本来显着加速代码.当使用c ++ 11/0x编译器时(例如gcc 4.6),STL已更新为使用此新功能

Boost 1.48引入了一个新的库,以便在旧的C++ 03编译器上模拟移动语义.这个库通过引入宏来扩展为真正的右值引用,当使用C++ 11编译器编译代码或使用C++ 03编译器编译代码时模拟rvalue引用.

除了boost::container更新任何其他的boost库以利用移动语义之外呢?

是否有一个路线图详细说明何时/如果将移动语义添加到其他boost库?

boost::multi_index_container已经提到在Boost.MultiIndex Future工作中添加了移动语义 ,因为它是在1.31版本中引入的.

je4*_*e4d 9

正如你在问题中所说,引入boost::move了1.48 ,一个用C++ 03模拟移动语义的库.这是由Ion Gaztanaga开发的,他也(大部分)写作并且目前正在维护boost::intrusiveboost::container.

侵入式和容器式支持都会移动语义 - 实际上boost::intrusive必须支持移动语义boost::container,因为boost::container基本上是一堆非侵入式容器通过包装它们的boost::intrusive对应物来实现.在我看来,侵入/容器是写作的动力boost::move,所以他们在其余的提升方面有一个良好的开端也就不足为奇了.

但值得注意的是,没有提升路线图或委员会 - 提升只是一个共享分发,网站和审查/质量控制流程的图书馆集合.您必须将每个库视为一个单独的项目,只有在作者/维护者有兴趣完成工作时(或者当您向他们发送补丁时),才会更新这些项目.

增强1.48/1.49/1.50/1.51/1.52发行说明是寻找可靠答案的最佳位置:

  • Boost.Interprocess自1.45起支持,包括C++ 11和C++ 03.在1.48之前,这包含成为boost.move的代码.
  • Boost.Asio自1.47以来一直支持; 在C++ 03中没有仿真
  • Boost.Intrusive在1.48(C++ 11,C++ 03)中通过boost.move获得支持
  • Boost.Container在1.48中是新的,通过boost.move支持(C++ 11,C++ 03)
  • Boost.Icl在1.49(C++ 11,C++ 03)中通过boost.move获得支持
  • Boost.Unordered通过1.49中的boost.move获得了支持(C++ 11,#define在C++ 03中启用了仿真)
  • 从1.50开始,Boost.Thread支持C++ 03仿真w/boost.move,旧版本支持C++ 11仅支持
  • Boost.Function在1.52中添加了仅支持C++ 11的支持