C++ boost库中std::move的对应项

C++ boost库中std::move的对应项,c++,c++11,boost,C++,C++11,Boost,我试图在代码中使用std::move,但我使用的编译器(g++4.4)不支持它。boost::move能否完全替代std::move?谢谢 std::move(以及启用c++0x支持时的boost::move)只是从T&到T&的转换。它实际上不移动任何东西。这意味着编译器必须支持特定类型的指针T&。自版本4.3以来,GCC支持r值引用,因此boost版本应该可以 但是,有什么原因不能使用std::movefrom#include 您只需要确保指定-std=c++0x作为编译器选项,以启用GCC

我试图在代码中使用
std::move
,但我使用的编译器(g++4.4)不支持它。
boost::move
能否完全替代
std::move
?谢谢

std::move
(以及启用c++0x支持时的
boost::move
)只是从
T&
T&
的转换。它实际上不移动任何东西。这意味着编译器必须支持特定类型的指针
T&
。自版本4.3以来,GCC支持r值引用,因此boost版本应该可以

但是,有什么原因不能使用
std::move
from
#include

您只需要确保指定
-std=c++0x
作为编译器选项,以启用GCC4.4所具有的有限的c++11支持。

是的,它可以

什么是推进,移动

右值引用是C++0x的一个主要特性,支持移动语义 对于C++值。但是,我们不需要C++0x编译器 移动语义的优点。Move模拟C++0x移动语义 在C++03编译器中,并允许编写可移植代码 在C++03和C++0x编译器中进行优化

资料来源:

g++4.4
非常古老。考虑到新版本的C++ 03代码:Boo::移动< /COD>它不仅仅是一个演员:这就是为什么它在那里工作。“Boost.Move基于C++0x编译器中扩展为真右值引用的宏,以及C++03编译器中模拟的右值引用类和转换运算符。”请参阅