16#if __cplusplus < 201402L
25template <
typename T,
typename... Args>
26unique_ptr<T> make_unique_helper(false_type, Args&&... args)
28 return unique_ptr<T>(
new T(forward<Args>(args)...));
31template <
typename T,
typename... Args>
32unique_ptr<T> make_unique_helper(true_type, Args&&... args)
34 static_assert(extent<T>::value == 0,
35 "make_unique<T[N]>() is forbidden, please use make_unique<T[]>().");
37 typedef typename remove_extent<T>::type U;
38 return unique_ptr<T>(
new U[
sizeof...(Args)]{forward<Args>(args)...});
41template <
typename T,
typename... Args>
42unique_ptr<T> make_unique(Args&&... args)
44 return make_unique_helper<T>(is_array<T>(), forward<Args>(args)...);