Re[4]: Вот такой еще вариант
От: rg45 СССР  
Дата: 19.07.23 14:01
Оценка: 3 (1) +1
R>Можно заморочиться, и сделать универсальный Maker:
R>http://coliru.stacked-crooked.com/a/401ae1d975a23db1

Вот такой еще вариант. Это, по-моему, даже лучше — можно легко адаптировать как под создание различных поинтеров, так и под непосредственное создание объектов:

http://coliru.stacked-crooked.com/a/3fcdc4eeaf7a5fa1

template <typename F>
class Maker
{
public:

    explicit Maker(F&& f) : m_f(std::forward<F>(f)) {}

    operator auto() && { return m_f(); }

private:

    F m_f;
};

template <typename F>
Maker(F&&) -> Maker<F>;

template <typename T, typename... A>
auto unique_maker(A&&...args) { return Maker([&]{ return std::make_unique<T>(std::forward<A>(args)...); }); }
--
Справедливость выше закона. А человечность выше справедливости.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.