C++ 哪些Boost库利用了移动语义
右值引用和移动语义是C++11的一个主要特性,它可以通过减少不必要的副本来显著加快代码的速度。STL已更新,以便在使用c++11/0x编译器时使用此新功能(例如gcc 4.6) Boost1.48引入了一个新的库,以便在旧的C++03编译器上模拟移动语义。该库的工作原理是引入宏,当使用C++11编译器编译代码时,这些宏将扩展为真正的右值引用;当使用C++03编译器编译代码时,这些宏将模拟右值引用 除了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库已经更新以利用移动语义 是否有详细说
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,使用
在C++03中启用仿真)#define
- Boost.Thread支持C++03仿真w/Boost.move自1.50以来,旧版本仅支持C++11
- Boost.Function仅在1.52中添加了C++11支持