我々はすべてそれを知っている
Foo returnAFoo()
{
return Foo();
}
Foo
戻り値の最適化を使用してコンパイルされるため、コピー コンストラクターに副作用があっても値のコピーは取得されません。しかし、
Foo returnAFoo()
{
Foo f = Foo();
return f;
}
それも?2 番目の構文は、デバッグ時に役立ちます。しかし、そうすることで重要な最適化を捨てているのでしょうか? おそらく、明示的な移動コンストラクターを作成する必要がありますか?