首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >哪些助推库利用了移动语义

哪些助推库利用了移动语义
EN

Stack Overflow用户
提问于 2012-03-10 05:25:55
回答 1查看 1.5K关注 0票数 12

右值引用和移动语义是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版本中引入的。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2012-03-10 06:26:44

正如您在问题中所说的,Boost1.48引入了boost::move,这是一个用C++03模拟移动语义的库。这是由Ion Gaztanaga开发的,他也(主要)编写并维护了boost::intrusiveboost::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都支持

  • Boost.Interprocess。在1.48之前,这包含了boost.move.
  • Boost.Asio从1.47开始支持的代码;C++03
  • Boost.Intrusive中的仿真在1.48中没有通过boost.move获得支持(C++11,C++03)
  • Boost.Unordered在1.48中是通过boost.move获得支持的) (C++11,C++03)
  • Boost.Unordered在1.49中通过boost.move获得支持(C++11,with在1.49中通过boost.move获得支持(C++11,使用在C++03)
  • Boost.Thread中启用模拟的support
  • Boost.Function支持使用#define进行C++03模拟。从1.50开始,旧版本仅在C++11中添加了C++11,在1.52

中仅支持C++11

票数 9
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/9641216

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档