C++14 make_unique()

N3656 make_unique (Revision 1)


C++14では、std::unique_ptrクラスのオブジェクトを生成するヘルパー関数として、make_unique()が追加されます。

// <memory>
namespace std {
  template<class T, class... Args> unique_ptr<T> make_unique(Args&&... args);
  template<class T> unique_ptr<T> make_unique(size_t n);
  template<class T, class... Args> unspecified make_unique(Args&&...) = delete;
}
#include <memory>

struct X {
    X(int a, int b, int c) {}
};

int main()
{
    // make_unique()の引数には、型Tのコンストラクタ引数を指定する
    std::unique_ptr<X> p = std::make_unique<X>(1, 2, 3);
   
    // 配列の場合は、要素数を指定する
    std::unique_ptr<int[]> q = std::make_unique<int[]>(5);
}