重複の可能性:
コピーと直接初期化の動作が異なる理由は何ですか?
そして、コピーの初期化とは、次のように意味します。
struct MyStruct
{
MyStruct(int) {}
MyStruct(const MyStruct&) {}
};
MyStruct s = 5; // needs *both* the int and copy constructor
何年もの間 C++ でプログラミングを行っていましたが、上記のコードにコピー コンストラクターが必要であることに気づきませんでした (jogojapan に感謝します)。一時的なものは常に省略されていたので、指摘されるまで、それが存在することすら知りませんでした(少なくとも表面的なレベルでは、最適化されているにもかかわらず)。
かなりの量のグーグルの後、私はそれがどのように機能するかを理解します。私の質問は、なぜそれがそのようになっているのですか?
上記の例でコピー コンストラクターが不要になるように、標準で作成しなかったのはなぜですか? このタイプの初期化でコピーコンストラクターを要求することが重要であることを示す特定のケース/例はありますか?
なぜそうなっているかについての適切な説明がなければ、私はこれを迷惑なアーティファクトと見なすだけですが、何か重要なものが欠けている場合は、無知である必要はありません.