冗長性を減らし、型安全性を高めるという利点があるにもかかわらず、 std::make_unique は C 11 標準には含まれていませんでした。 C 標準化委員会の委員長である Herb Sutter 氏は、この省略は見落としによるものだと考えています。
ユーザー定義の make_unique 実装では、std::forward< Args>(args)... は、引数を T のコンストラクターに完全に転送するために使用されます。この手法により、引数が確実に最も最適な右辺値 (または左辺値) 参照。
std::forward が左辺値参照に適用されると、それが右辺値参照に変換され、コンストラクターが右辺値に直接バインドできるようになります。逆に、 std::forward が右辺値参照に適用される場合、何も行われません。
make_unique 実装は、新しい T でメモリを割り当てて呼び出し、T の新しいインスタンスを作成します。転送された引数を含むそのコンストラクター。完全転送を使用すると、不要なコピーや不要な一時オブジェクトが防止されます。
C 11 の一部ではありませんが、std::make_unique は、一意のポインターを簡潔に作成するための規則として広く採用されています。これにより、コードの可読性が向上し、型の処理が簡素化され、効率的なリソース管理が保証されます。 C 14 への組み込みが予想されることは、現代の C プログラミングにおけるその重要性をさらに強調します。
以上がなぜ `std::make_unique` が C 11 からなくなったのでしょうか?また、完全転送はどのように機能を強化しますか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。