重複の可能性:
移動元のオブジェクトで何ができますか?
結果を呼び出しstd::move
て関数に渡した後、通常、移動したオブジェクトに後でアクセスすると、未定義の動作が発生することを想定する必要があります。
それらのアクセスを検出して警告することができるツールはありますか?例えば:
{
Widget w;
foo(std::move(w));
// w may be undefined at this point
w.doSomething(); // WARN
}
少なくとも、gcc 4.7.2
そして文句を言わないclang 3.2
でください。-Wall
更新:この質問を振り返ると、重要な点は、オブジェクトが移動された後もオブジェクトがまだ有効であるかどうかをコンパイラーが判断できないことです。提案N4034:Destructive Moveが受け入れられた場合、コンパイラーにはより多くのオプションがあると思います(ただし、移動が破壊的である場合のみ)。