次のようなことを考えてみてください。
class Foo {};
std::vector<Foo> v( 5 );
次のようなことをすることは合法ですか?
v.front() = std::move( v.back() );
後でこのようなことをした場合:
v.pop_back();
より正確には、セマンティクスを受けたxvalueに何が必要かを知りたいですstd::move()
。
私はそれが(明らかに)破壊可能である必要があることを知っています。しかし、他に何かありますか?ed値のコピー/移動をバックグラウンドstd::vector::insert()
で実行する可能性のある、またはその他の関数を呼び出すとします。
それはまだ合法ですか? std::move()
私の実際のケースでは、私はそれを持ってstd::vector<std::vector<Foo>>
いて、それを使って何かをしています。しかし、それがまだアウターによって使用されているからに
合法であるかどうかはわかりません。std::move()
std::vector
std::vector