Q: C 11 標準ライブラリに集中型の make_unique 関数がないのはなぜですか?
多くの人が、ユニークなポインタは不便です。例:
std::unique_ptr<SomeUserDefinedType> p(new SomeUserDefinedType(1, 2, 3));
次のような洗練された関数が好まれます:
auto p = std::make_unique<SomeUserDefinedType>(1, 2, 3);
Q: ここでは make_unique の実装を試みていますが、std::forward に関する何かが壊れているように見えます。これは何をしているのでしょうか?また、どのように使用することになっていますか?
template<typename T, typename... Args> std::unique_ptr<T> make_unique(Args&&... args) { return std::unique_ptr<T>(new T(std::forward<Args>(args)...)); }
A: C 11 の std::make_unique の省略は見落としとして認められ、C 14 で追加されました。
std::forward
以上がC 11 に `std::make_unique` がないのはなぜですか?また、その実装で完全転送はどのように機能しますか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。