Я пытаюсь использовать 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