我可以使用什么代替std :: move()?

时间:2012-05-11 14:58:08

标签: c++ c++11 std rvalue-reference move-semantics

我正在使用带有C ++ 0x规范的C ++编译器,并希望为包含std :: wstring的String类创建移动构造函数。

class String {
public:
    String(String&& str) : mData(std::move(str.mData)) {
    }

private:
    std::wstring mData;
};

在Visual Studio中,这完美无瑕。在Xcode中,std::move()不可用。

1 个答案:

答案 0 :(得分:5)

std::move只是将其参数转换为右值引用。你可以写自己的版本:

template<class T>
typename std::remove_reference<T>::type&&
move( T&& arg ) noexcept
{
  return static_cast<typename std::remove_reference<T>::type&&>( arg );
}