7

可動変換演算子の構文は何ですか?

をラップするラッパーがobjあり、obj変換演算子があります。

class wrap {
public:
   operator obj() { ... }
private:
   obj data_;
};

data_コピーまたは移動する必要があるかどうかを確認するにはどうすればよいですか?

4

1 に答える 1

11

その構文は次のようになります。

class wrap {
public:
   operator obj() const & { ... }   //Copy from me.
   operator obj() && { ... }  //Move from me.
private:
   obj data_;
};

最初のバージョンは、2 番目のバージョンを呼び出すことができない場合に呼び出されます (つまり、wrap変換されるインスタンスが一時的なものではないか、明示的に が使用されていない場合std::move)。

Visual Studio は、VS11 で右辺値参照のこの側面を実装していないことに注意してください。

于 2012-05-25T17:17:42.637 に答える