C 11 での make_unique 関数の実装
特定のコンパイラでは省略されているにもかかわらず、make_unique 関数は依然としてメモリ管理に重要なツールです。 C 11 でその機能を複製する方法は次のとおりです。
<code class="cpp">template<typename T, typename... Args> std::unique_ptr<T> make_unique(Args&&... args) { // Allocate the object on the heap with the provided arguments return std::unique_ptr<T>(new T(std::forward<Args>(args)...)); }</code>
この実装では std::forward を利用して、一意のポインターによって管理されているオブジェクトのコンストラクターへの引数の完全な転送を保証します。
VC2012 などの make_unique サポートがないコンパイラの場合、このカスタム実装は効果的な代替手段を提供します。ただし、コンパイラが sasha.sochka によって提供される回答をサポートしている場合、そのソリューションはより堅牢であり、配列も処理します。
以上がC 11 で make_unique 関数を実装するには?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。