##### cppreference.com

##### Search

Create account

##### Namespaces

- Page
- Discussion

##### Variants

##### Views

- View
- Edit
- History

##### Actions

# std::make_unique

From cppreference.com
< cpp‎ | memory‎ | unique ptr

Defined in header `<memory>` |  |
template< class T, class... Args > unique_ptr<T> make_unique( Args&&... args ); | (1) | (since C++14) (only for non-array types)
template< class T> unique_ptr<T> make_unique( std::size_t size ); | (2) | (since C++14) (only for array types with unknown bound)
template< class T, class... Args > /* unspecified */ make_unique( Args&&... args ) = delete; | (3) | (since C++14) (only for array types with known bound)

Constructs an object of type `T` and wraps it in a std::unique_ptr.

1) Constructs a non-array type `T`. The arguments `args` are passed to the constructor of `T`. The function does not participate in the overload resolution if `T` is an array type. The function is equivalent to:

    unique_ptr<T>(new T(std::forward<Args>(args)...))

2) Constructs an array of unknown bound `T`. The function does not participate in the overload resolution unless `T` is an array of unknown bound. The function is equivalent to:

    unique_ptr<T>(new typename std::remove_extent<T>::type[size]())

3) Construction of arrays of known bound is disallowed.

### [edit] Parameters

args | - | list of arguments with which an instance of `T` will be constructed.
size | - | the size of the array to construct

### [edit] Return value

std::unique_ptr of an instance of type `T`.

### [edit] Exceptions

Any exception thrown by the contructor of `T`. If an exception is thrown, this function has no effect.

### [edit] See also

(constructor) | constructs a new `unique_ptr` (public member function) [edit]

Retrieved from "http://en.cppreference.com/mwiki/index.php?title=cpp/memory/unique_ptr/make_unique&oldid=66638"