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

◆ inclusive_scan_right() [1/2]

template<typename Function , product_type T, typename Value >
constexpr auto kumi::inclusive_scan_right ( Function &&  f,
T &&  t,
Value  init 
)
inlineconstexpr

Computes the inclusive suffix scan of all elements of a product type using a non-tail recursive call.

Note
The first stored value is the result of the application of the function to the provided initial value and the last element of the product_type.
Parameters
fBinary callable function to apply
tProduct type to operate on
initOptional initial value of the scan
Returns
A tuple of suffix partial accumulations where each element 'I' equals f(get<0>(t), f(... , f(get<N-1>(t), init))

Helper type

namespace kumi::result
{
template<typename Function, product_type Tuple, typename Value> struct inclusive_scan_right;
template<typename Function, product_type Tuple, typename Value>
using inclusive_scan_right_t = typename inclusive_scan_right<Function,Tuple,Value>::type;
}
constexpr auto inclusive_scan_right(Function &&f, T &&t, Value init)
Computes the inclusive suffix scan of all elements of a product type using a non-tail recursive call.
Definition scan.hpp:238

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

Example

#include <kumi/kumi.hpp>
#include <iostream>
int main()
{
auto t = kumi::tuple{2.,1,short{55},'z'};
auto output = kumi::inclusive_scan_right( [](auto elt, auto acc)
{
return acc + sizeof(elt);
}
, t
, std::size_t{42}
);
std::cout << output << "\n";
auto u = kumi::tuple{1,3,2,4,0,5,9,6,7};
}
constexpr numeric_add plus
Forms a binary monoid callable that can be used in kumi::algoritm. It represents the addition.
Definition monoid.hpp:129
Fixed-size collection of heterogeneous values.
Definition tuple.hpp:37