0

右值引用通常会提高 C++ 程序的性能。但它们不能直接在 C++03 编译器中使用。幸运boost::move的是,即使在 C++03 中似乎也能模仿它:

右值引用是 C++0x 的一个主要特性,它支持 C++ 值的移动语义。但是,我们不需要 C++0x 编译器来利用移动语义。Boost.Move 在 C++03 编译器中模拟 C++0x 移动语义,并允许编写在 C++03 和 C++0x 编译器中最佳工作的可移植代码。

像用 C++98/03 编写的标准库之类的东西不会从中受益,boost::move因为它们需要重新编写。(新版本的标准库如 VC10 已使用右值引用重写。)

boost::move但我想知道自从1.48 引入以来,有多少 Boost 库被重写了?

4

2 回答 2

2

查看Boost 版本历史,我看到Unordered在 1.48 中更新,Thread在 1.50 中更新。我看不到其他采用 Boost.Move 的人。

于 2012-10-19T16:31:39.963 回答
0

我刚刚检查了 Boost 1.51.0,它似乎boost::move受到以下库的支持:

  • 容器(包括vector,listmap
  • 进程间(包括smart_ptrunique_ptr
  • 侵入式
  • 线
  • 无序

只需在 Boost headers 中搜索,BOOST_RV_REF这是boost::move支持的标志。

于 2012-10-27T07:40:04.067 回答