Re[3]: другой Вопрос по стандартному unique_ptr
От: rg45 СССР  
Дата: 19.07.23 13:08
Оценка: +1
Здравствуйте, Sm0ke, Вы писали:

S>В мейкер придётся ещё передавать параметры создания объекта, и в нём хранить. Но в целом идея ясна, спасибо

S>upd: Хотя выглядит как костыль)

Можно заморочиться, и сделать универсальный Maker:

http://coliru.stacked-crooked.com/a/401ae1d975a23db1

template <typename T, typename...A>
class Maker
{
public:

    explicit Maker(A&&...args) : m_args(std::forward<A>(args)...) {}

    operator std::unique_ptr<T>() &&
    {
        return std::apply(std::make_unique<T, A&&...>, std::move(m_args));
    }

private:

    std::tuple<A&&...> m_args;
};

template <typename T, typename... A>
Maker<T, A...> maker(A&&...args) { return Maker<T, A...>{ std::forward<A>(args)...}; }
--
Справедливость выше закона. А человечность выше справедливости.
Отредактировано 19.07.2023 13:35 rg45 . Предыдущая версия . Еще …
Отредактировано 19.07.2023 13:12 rg45 . Предыдущая версия .
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.