C 11 での make_unique のカスタム実装
make_unique は、動的に割り当てられたインスタンスを持つ unique_ptr オブジェクトを作成するために C 14 で導入されたユーティリティ関数です。 。これは、生のポインタが望ましくなく、所有権の管理が必要な場合に便利です。ただし、コンパイラが make_unique をサポートしていない場合は、カスタム テンプレート関数を使用して簡単に実装できます。
make_unique を記述するには、次のテンプレート宣言が使用されます。
<code class="cpp">template< class T, class... Args > unique_ptr<T> make_unique( Args&&... args );</code>
このテンプレートは型 T と可変数の引数 Args。次の実装では、指定された引数を使用して構築された新しい T インスタンスを持つ unique_ptr オブジェクトを作成します。構文は、コンストラクターへの引数の完全な転送を保証するために使用されます。 std::forward を呼び出すと、参照の折りたたみルールは適用されず、左辺値または右辺値の参照が保持されます。
<code class="cpp">template<typename T, typename... Args> std::unique_ptr<T> make_unique(Args&&... args) { return std::unique_ptr<T>(new T(std::forward<Args>(args)...)); }</code>この make_unique のカスタム実装は標準バージョンの動作を模倣し、C で unique_ptr オブジェクトを作成できるようにします。 make_unique がサポートされていない 11 の環境。
以上が所有権管理を強化するために C 11 で「make_unique」を実装するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。