kumi v3.1.0
Exquisite Epidote
Loading...
Searching...
No Matches

◆ map()

template<concepts::product_type Tuple, typename Function, concepts::sized_product_type< size_v< Tuple > >... Tuples>
requires (concepts::compatible_product_types<Tuple, Tuples...> && _::supports_call<Function, Tuple &&, Tuples && ...>)
auto kumi::map ( Function f,
Tuple && t0,
Tuples &&... others )
inlinenodiscardconstexpr

Apply the Callable object f on each tuples' elements.

Applies the given function to all the tuples passed as arguments and stores the result in another tuple, keeping the original elements order.

Note
Does not participate in overload resolution if tuples' size are not equal or if f can't be called on each tuple's elements.
Parameters
fCallable function to apply
t0Tuple to operate on
othersTuples to operate on
Returns
The tuple of f calls results.

Helper type

namespace kumi::result
{
template<typename Function, product_type T, product_type... Ts> struct map;
template<typename Function, product_type T, product_type... Ts>
using map_t = typename map<Function,Tuple>::type;
}
constexpr auto map(Function f, Tuple &&t0, Tuples &&... others)
Apply the Callable object f on each tuples' elements.
Definition map.hpp:45

Computes the return type of a call to kumi::map

Examples:

#include <kumi/kumi.hpp>
#include <iostream>
int main()
{
auto lhs = kumi::tuple{1,2,3};
auto rhs = kumi::tuple{2.5,3.6,4.7};
auto res = kumi::map( [](auto l, auto r) { return l*r; }, lhs, rhs);
std::cout << res << "\n";
}
Fixed-size collection of heterogeneous values.
Definition tuple.hpp:29
#include <kumi/kumi.hpp>
#include <iostream>
int main()
{
using namespace kumi::literals;
auto lhs = kumi::record{"a"_id = 1,"b"_id = 2,"c"_id = 3};
auto rhs = kumi::record{"a"_id = 2.5,"b"_id = 3.6,"c"_id = 4.7};
auto res = kumi::map( [](auto l, auto r) { return l*r; }, lhs, rhs);
std::cout << res << "\n";
}
Fixed-size collection of heterogeneous fields necessarily named, names are unique.
Definition record.hpp:29