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 に答える