2012-10-19 32 views
0

Rvalue引用通常會提升C++程序的性能。但是它們不能直接在C++ 03編譯器中使用。幸運boost::move似乎能夠效仿甚至在C++ 03:Boost.Move與其他Boost庫的集成

右值引用是主要的C++ 0x功能,可實現對C++值移動語義 。但是,我們並不需要C++ 0x編譯器採取移動語義學的優勢 。 Boost.Move模擬C++ 0x在C++ 03編譯器中移動語義 ,並允許編寫在C++ 03和C++ 0x編譯器中最佳工作 的可移植代碼。

像使用C++ 98/03編寫的標準庫一樣,它們不會從boost::move中受益,因爲它們需要重寫。 (VC10的標準庫的新版本已使用右值引用重寫)

但是我想知道自從boost::move在1.48中引入後,有多少Boost庫已被重寫?

回答

2

通過Boost version history看,我看到無序在1.48和主題最後一次更新的1.50已更新。我看不到任何採用Boost.Move的人。

+0

謝謝。您是否知道有任何報告稱,由於在C++ 11中重寫了STL效率增加了多少VC11/VC10版本? – Gob00st

+0

不知道任何,對不起。 – chrisaycock

+0

沒關係,謝謝 – Gob00st

0

我剛剛檢查升壓1.51.0,似乎boost::move由以下庫支持:

  • 集裝箱(包括vectorlistmap等)
  • 進程間(包括smart_ptrunique_ptr
  • 侵入
  • 螺紋
  • 無序

只需在Boost標題中搜索BOOST_RV_REF這是boost::move支持的標誌。