12 using value = std::unique_ptr<T>;
17 using unbounded_array = std::unique_ptr<T[]>;
20 template <
typename T,
size_t N>
22 using bounded_array = void;
25 template <
typename T,
typename... Args>
26 typename unique_type_for<T>::value make_unique(Args&&... args) {
27 return std::unique_ptr<T>(
new T(std::forward<Args>(args)...));
32 using U =
typename std::remove_extent<T>::type;
33 return std::unique_ptr<T>(
new U[size]());
36 template <
typename T,
size_t N,
typename... Args>