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
-
| f | Callable function to apply |
| t0 | Tuple to operate on |
| others | Tuples 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>
}
Computes the return type of a call to kumi::map
Examples:
#include <kumi/kumi.hpp>
#include <iostream>
int main()
{
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 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