Rvalue Ссылки обычно повышают производительность в программе на C ++. Но они не доступны напрямую в компиляторе C ++ 03. к счастью boost::move
кажется, в состоянии эмулировать это даже в C ++ 03:
Rvalue-ссылки являются основной функцией C ++ 0x, позволяющей семантику перемещения
для значений C ++. Однако нам не нужны компиляторы C ++ 0x, чтобы
Преимущество ходовой семантики. Boost.Move эмулирует семантику перемещения C ++ 0x
в компиляторах C ++ 03 и позволяет писать переносимый код, который работает
оптимально в компиляторах C ++ 03 и C ++ 0x.
Такие вещи, как стандартная библиотека, написанная на C ++ 98/03, не принесут пользы boost::move
как они должны быть переписаны. (Новые версии стандартной библиотеки, такие как VC10, были переписаны с использованием ссылок rvalue.)
Но мне интересно, сколько библиотек Boost было переписано с тех пор boost::move
был введен в 1.48?
Глядя через Повысьте историю версий, я вижу это Неупорядоченный был обновлен в 1.48 и Нить был обновлен в 1.50. Я не вижу других, которые приняли Boost.Move.
Я только что проверил Boost 1.51.0 и кажется, что boost::move
поддерживается следующими библиотеками:
vector
, list
, map
так далее.)smart_ptr
а также unique_ptr
)Просто искать BOOST_RV_REF
в заголовках Boost, что является признаком boost::move
служба поддержки.