C++ Logo

std-proposals

Advanced search

[std-proposals] std::construct<T>

From: Avi Kivity <avi_at_[hidden]>
Date: Sun, 01 Dec 2024 17:57:05 +0200
Functions and member functions are invocable, but constructors are not.

I propose to add

template <typename T, typename... Args>
T std::construct(Args&&... args) {
    return T(std::forward<decltype(Args)>(args)...);
}

With this, we can pass a constructor where other functions can be
passed.

    // build a callback that creates and returns a Type1 thing
    std::function<Type1 (Arg3)> make_somthing =
std::bind_front(std::construct<Type1>, arg1, std::ref(arg2));

    // transform a vector of ints to a vector of some other type
    auto foo = some_container |
std::views::transform(std::construct<AnotherType>) |
std::ranges::to<std::vector>();

Received on 2024-12-01 15:57:12