我试图在代码中使用std::move,但是我使用的编译器(g++ 4.4)不支持它。boost::move能完全替代std::move吗?谢谢。
发布于 2016-08-04 08:02:33
std::move (以及启用c++0x支持时的boost::move )只是从T&到T&&的转换。它实际上不会动任何东西。这意味着编译器必须支持特定类型的指针T&&。GCC支持4.3版本以来的r值引用,所以boost版本应该可以.
但是,您不能使用来自std::move的#include <utility>是否有原因?
http://en.cppreference.com/w/cpp/utility/move
您只需要确保指定-std=c++0x作为编译器选项,以便启用gcc 4.4所提供的有限c++11支持。
发布于 2016-08-04 08:03:27
是的,可以
Boost.Move是什么? Rvalue引用是一个主要的C++0x特性,支持C++值的移动语义。然而,我们不需要C++0x编译器来利用移动语义。Boost.Move在C++03编译器中模拟C++0x移动语义,并允许编写在C++03和C++0x编译器中最佳工作的可移植代码。
来源:b1/doc/html/move.html
https://stackoverflow.com/questions/38761626
复制相似问题