Я пытаюсь использовать std::move в своих кодах, но компилятор (g++ 4.4), который я использую, не поддерживает его. Может ли boost::move полностью заменить std::move? Благодарю.
Аналог std:: move в boost-библиотеке
Ответ 1
std::move (и boost::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