23template <
typename T,
typename F>
24[[nodiscard]]
auto transform(
const std::vector<T> &input, F &&func) -> std::vector<std::invoke_result_t<F, const T &>>
26 return input | std::views::transform(std::forward<F>(func)) | std::ranges::to<std::vector>();
40template <
typename U,
typename T>
41 requires std::constructible_from<U, T>
42[[nodiscard]]
auto transform(
const std::vector<T> &input) -> std::vector<U>
44 return input | std::views::transform([](
const T &val) {
return U(val); }) | std::ranges::to<std::vector>();
59template <
typename T,
typename F>
60[[nodiscard]]
auto transform(
const std::set<T> &input, F &&func) -> std::set<std::invoke_result_t<F, const T &>>
62 return input | std::views::transform(std::forward<F>(func)) | std::ranges::to<std::set>();
76template <
typename U,
typename T>
77 requires std::constructible_from<U, T>
78[[nodiscard]]
auto transform(
const std::set<T> &input) -> std::set<U>
80 return input | std::views::transform([](
const T &val) {
return U(val); }) | std::ranges::to<std::set>();
auto transform(const std::vector< T > &input, F &&func) -> std::vector< std::invoke_result_t< F, const T & > >
Transforms a vector of type T into a vector of type U using a mapping function.