4

我正在使用具有 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()不可用。

4

1 回答 1

6

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 );
}
于 2012-05-11T15:13:40.433 回答