7#include <dr/mp/algorithms/inclusive_exclusive_scan_impl.hpp>
13auto exclusive_scan(R &&r, O &&o, T init, BinaryOp &&binary_op) {
14 return __detail::inclusive_exclusive_scan_impl_<true>(
15 std::forward<R>(r), rng::begin(std::forward<O>(o)),
16 std::forward<BinaryOp>(binary_op),
17 std::optional<rng::range_value_t<R>>(init));
22auto exclusive_scan(R &&r, O &&o, T init) {
23 return dr::mp::exclusive_scan(std::forward<R>(r), std::forward<O>(o),
24 static_cast<rng::range_value_t<R>
>(init),
25 std::plus<rng::range_value_t<R>>());
31 typename T,
typename BinaryOp>
32OutputIter exclusive_scan(Iter first, Iter last, OutputIter d_first, T init,
33 BinaryOp &&binary_op) {
35 return dr::mp::exclusive_scan(rng::subrange(first, last), d_first,
36 std::forward<BinaryOp>(binary_op), init);
41OutputIter exclusive_scan(Iter first, Iter last, OutputIter d_first, T init) {
42 auto dist = rng::distance(first, last);
43 auto d_last = d_first;
44 rng::advance(d_last, dist);
45 dr::mp::exclusive_scan(rng::subrange(first, last),
46 rng::subrange(d_first, d_last), init);
Definition: concepts.hpp:42
Definition: concepts.hpp:31