ホームページ  >  記事  >  バックエンド開発  >  コンパイラがサポートしていない場合に C 11 で `make_unique` を実装するにはどうすればよいですか?

コンパイラがサポートしていない場合に C 11 で `make_unique` を実装するにはどうすればよいですか?

Patricia Arquette
Patricia Arquetteオリジナル
2024-11-01 10:25:02659ブラウズ

How to Implement `make_unique` in C  11 When Your Compiler Doesn't Support It?

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 サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。