C++ 哪些Boost库利用了移动语义

C++ 哪些Boost库利用了移动语义,c++,boost,c++11,rvalue-reference,move-semantics,C++,Boost,C++11,Rvalue Reference,Move Semantics,右值引用和移动语义是C++11的一个主要特性,它可以通过减少不必要的副本来显著加快代码的速度。STL已更新,以便在使用c++11/0x编译器时使用此新功能(例如gcc 4.6) Boost1.48引入了一个新的库,以便在旧的C++03编译器上模拟移动语义。该库的工作原理是引入宏,当使用C++11编译器编译代码时,这些宏将扩展为真正的右值引用;当使用C++03编译器编译代码时,这些宏将模拟右值引用 除了boost::container之外,是否有其他boost库已经更新以利用移动语义 是否有详细说

右值引用和移动语义是C++11的一个主要特性,它可以通过减少不必要的副本来显著加快代码的速度。STL已更新,以便在使用c++11/0x编译器时使用此新功能(例如gcc 4.6)

Boost1.48引入了一个新的库,以便在旧的C++03编译器上模拟移动语义。该库的工作原理是引入宏,当使用C++11编译器编译代码时,这些宏将扩展为真正的右值引用;当使用C++03编译器编译代码时,这些宏将模拟右值引用

除了
boost::container
之外,是否有其他boost库已经更新以利用移动语义

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

boost::multi_index_container
提到在
,因为它是在1.31版中引入的。

正如您在问题中所说,boost 1.48引入了
boost::move
,一个用C++03模拟移动语义的库。这是由Ion Gaztanaga开发的,他(大部分)还编写并维护了
boost::intrusive
boost::container

介入式和容器都支持移动语义-事实上,
boost::intrusive
必须支持
boost::container
to的移动语义,因为
boost::container
基本上是一组非介入式容器,通过包装它们的
boost::intrusive
对应项来实现。在我看来,侵入式/container是编写
boost::move
的动机,因此它们在boost的其余部分中占据领先地位也就不足为奇了

但需要注意的是,这里没有boost路线图或委员会——boost只是一个共享分发、网站和审查/质量控制流程的库集合。你必须把每个库视为一个单独的项目,只有当作者/维护者对这项工作感兴趣(或者当然,当你给他们一个补丁)时,每个库才会被更新。 ////是寻找可靠答案的最佳场所:

  • 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中启用仿真)
  • Boost.Thread支持C++03仿真w/Boost.move自1.50以来,旧版本仅支持C++11
  • Boost.Function仅在1.52中添加了C++11支持
注意:名称“STL”已弃用且不明确。改用“C++标准库”。