このリンクされた質問は、make_shared<>
関数とshared_ptr<>
コンストラクターが異なるかどうかを尋ねました。
答えの一部は、make_shared<>
通常、ポイントされたオブジェクトとスマート ポインター制御ブロックの両方に 1 回の割り当てでメモリを割り当てることでした。コンストラクターは 2 つのshared_ptr<>
割り当てを使用します。
cppreferenceは、コンストラクターがそうする必要があると述べていますが、理由は示されていません。
どうしてこれなの?何らかの理由でそれは不可能ですか?それとも、他の理由で標準で禁止されていますか?