Аналог std:: move в boost-библиотеке

Я пытаюсь использовать std::move в своих кодах, но компилятор (g++ 4.4), который я использую, не поддерживает его. Может ли boost::move полностью заменить std::move? Благодарю.

Ответ 1

std::moveboost::move, когда поддержка С++ 0x включена) является просто отличным от T& до T&&. На самом деле ничего не движет. Это означает, что конкретный тип указателя T&& должен поддерживаться компилятором. GCC поддерживает ссылки r-value с версии 4.3, поэтому версия boost должна быть в порядке.

Однако есть ли причина, по которой вы не можете использовать std::move из #include <utility>?

http://en.cppreference.com/w/cpp/utility/move

Вам просто нужно указать -std=c++0x как параметр компилятора, чтобы включить ограниченную поддержку С++ 11, которая имеет gcc 4.4.

Ответ 2

Да, он может

Что такое Boost.Move?

Ссылки Rvalue - это основная функция С++ 0x, позволяющая семантику перемещения для значений С++. Однако нам не нужны компиляторы С++ 0x преимущество перемещения семантики. Boost.Move эмулирует семантику перемещения С++ 0x в компиляторах С++ 03 и позволяет писать переносимый код, который работает оптимально в компиляторах С++ 03 и С++ 0x.

Источник: http://www.boost.org/doc/libs/1_59_0_b1/doc/html/move.html