[unique.ptr.create] (original) (raw)

20 Memory management library [mem]

20.3 Smart pointers [smartptr]

20.3.1 Unique-ownership pointers [unique.ptr]

20.3.1.5 Creation [unique.ptr.create]

template<class T, class... Args> constexpr unique_ptr<T> make_unique(Args&&... args);

Constraints: T is not an array type.

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

template<class T> constexpr unique_ptr<T> make_unique(size_t n);

Constraints: T is an array of unknown bound.

Returns: unique_ptr<T>(new remove_extent_t<T>[n]()).

template<class T, class... Args> _unspecified_ make_unique(Args&&...) = delete;

Constraints: T is an array of known bound.

template<class T> constexpr unique_ptr<T> make_unique_for_overwrite();

Constraints: T is not an array type.

Returns: unique_ptr<T>(new T).

template<class T> constexpr unique_ptr<T> make_unique_for_overwrite(size_t n);

Constraints: T is an array of unknown bound.

Returns: unique_ptr<T>(new remove_extent_t<T>[n]).

template<class T, class... Args> _unspecified_ make_unique_for_overwrite(Args&&...) = delete;

Constraints: T is an array of known bound.