右值引用和移动语义是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
提到了在Boost.MultiIndex Future work上添加移动语义,因为它是在1.31版本中引入的。
发布于 2012-03-10 06:26:44
正如您在问题中所说的,Boost1.48引入了boost::move
,这是一个用C++03模拟移动语义的库。这是由Ion Gaztanaga开发的,他也(主要)编写并维护了boost::intrusive
和boost::container
。
侵入式和容器都支持移动语义-事实上,boost::intrusive
必须支持boost::container
to的移动语义,因为boost::container
基本上是一堆非侵入式容器,通过包装它们的boost::intrusive
副本来实现。在我看来,侵入式/容器是编写boost::move
的动机,所以他们比boost的其余部分领先也就不足为奇了。
但这里需要注意的是,boost并没有路线图或委员会- boost只是共享发行版、网站和审查/质量控制过程的库的集合。您必须将每个库视为一个单独的项目,只有当作者/维护者有兴趣做这项工作时(当然,当您向他们发送补丁时)才会进行更新。
The boost 1.48/1.49/1.50/1.51/1.52 release notes是寻找可靠答案的最佳位置:
从1.45开始,C++11和C++03都支持
#define
进行C++03模拟。从1.50开始,旧版本仅在C++11中添加了C++11,在1.52中仅支持C++11
https://stackoverflow.com/questions/9641216
复制相似问题