重複の叫びが始まる前に: 次の質問 (およびその他の質問) がこの質問に非常に関連していることを認識しています。
コピー初期化と直接初期化の間に C++ の違いはありますか?
この質問の回答は、コピーの初期化が不可能なシナリオを完全に説明し、2 つの違いとそのすべてを説明しています。ただし、私の質問はより微妙です。
次のコードを検討してください。
A createA(){...}
A a1 = createA();
A a2(createA());
A は暗黙的にコピー構築できると仮定すると、 と の両方の初期化は問題a1
ありませんa2
。のコピー コンストラクターには副作用がないA
ため、両方の初期化も意味的に同等です。createA()
最初にキャストする必要があるものではなく、変数の型を直接返します。このケースはかなり多いと思います。
したがって、この場合、両方の選択肢が等しく適用可能であり、意味的に同等である場合、どちらを使用する必要がありますか? 仕様またはコミュニティのコンセンサス/ベストプラクティスに推奨事項はありますか?それとも、どちらを使用するかは私と私のコーディングスタイル次第ですか? C++11 は、古い標準と比較して何か違いを導入しましたか?