このようなコードは、r値参照の記事でよく見られます。
void g(X);
void f()
{
X b;
g(b); // still need the value of b
…
g( std::move(b) ); // all done with b now; grant permission to move
}
コンパイラはこの最適化を自動的に生成できますか?つまり、l値を検出するためにとにかく破壊されてから移動される可能性がありますか、または一般的なケースでコンパイラがどのようにXクラスに実装された移動、コピー、または破棄?
そのような最適化が許可されている場合、それは実際にいくつかのコンパイラによって実行されますか?