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::multi_index_container
已经提到了添加移动语义
Boost.MultiIndex Future work,因为它是在1.31版本中引入的。
答案 0 :(得分:9)
正如你在问题中所说,boost 1.48引入了boost::move
,这是一个用C ++ 03模拟移动语义的库。这是由Ion Gaztanaga开发的,他也(大多数时候)编写并且目前维护boost::intrusive
和boost::container
。
侵入性和容器支持都会移动语义 - 实际上boost::intrusive
必须支持boost::container
的移动语义,因为boost::container
基本上是一堆通过包装它们实现的非侵入式容器boost::intrusive
同行。在我看来,像侵入/容器是写作boost::move
的动机,因此他们在其余的提升方面有一个良好的开端并不奇怪。
但这里需要注意的是,没有提升路线图或委员会 - 提升只是一个共享分发,网站和审查/质量控制流程的图书馆集合。您必须将每个库视为一个单独的项目,只有在作者/维护者有兴趣完成工作时(或者当您向他们发送补丁时!)才会更新。
The boost 1.48 / 1.49 / 1.50 / 1.51 / 1.52 release notes是寻找可靠答案的最佳位置:
#define
通过boost.move获得支持,以便在C ++中启用模拟03)