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>();
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