template<typename ReturnType, typename... Args, typename = enable_if_t<is_array_v<ReturnType> && extent_v<ReturnType> == 0>>
unique_ptr<ReturnType> make_unique(Args &&... args) {
using element_type = remove_extent_t<ReturnType>;
return unique_ptr<ReturnType>(new element_type[sizeof...(Args)] { forward<Args>(args)... });
}
}
void test() {
std::make_unique<std::unique_ptr<int>[]>(
std::make_unique<int>(0),
std::make_unique<int>(1),
std::make_unique<int>(2)
);
}
ну make_vector(a, b, c) я умею, да
Посмотрю попинаю этот вариант
Это UB из-за (хоть и частичной, но) специализации шаблона стандартной библиотеки.
довольно красиво, кстати, выглядит. и относительно лаконично
Обсуждают сегодня