C 11 での make_unique 関数の再作成
C 11 標準では、一意のポインターを作成するための強力な関数 make_unique が導入されています。ただし、コンパイラがこの機能をサポートしていないという問題が発生する場合もあります。この記事では、C 11 で make_unique を実装するための回避策を提供します。
質問のとおり、make_unique 関数のプロトタイプは次のとおりです。
<code class="cpp">template< class T, class... Args > unique_ptr<T> make_unique( Args&&&... args );</code>
次のコードは、make_unique の実装を提供します。
<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>
この実装では std::forward<> を使用します。
コンパイラが C 11 をサポートしているが make_unique 関数をサポートしていない場合でも、この実装を回避策として使用できることに注意してください。あるいは、C 14 以降をサポートするコンパイラにアクセスできる場合は、この目的で標準の std::make_unique 関数を利用することもできます。
以上がコンパイラがサポートしていない場合に C 11 で `make_unique` を実装するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。