di 0.1.0
Loading...
Searching...
No Matches
fold_left_first.h
Go to the documentation of this file.
1#pragma once
2
4
5namespace di::container {
6namespace detail {
7 struct FoldLeftFirstFunction {
8 template<concepts::InputIterator Iter, concepts::SentinelFor<Iter> Sent,
9 concepts::IndirectlyBinaryLeftFoldable<meta::IteratorValue<Iter>, Iter> Op>
10 requires(concepts::ConstructibleFrom<meta::IteratorValue<Iter>, meta::IteratorReference<Iter>>)
11 constexpr auto operator()(Iter first, Sent last, Op op) const {
12 return util::move(fold_left_first_with_iter(util::move(first), util::move(last), util::ref(op)).value);
13 }
14
15 template<concepts::InputContainer Con,
16 concepts::IndirectlyBinaryLeftFoldable<meta::ContainerValue<Con>, meta::ContainerIterator<Con>> Op>
17 requires(concepts::ConstructibleFrom<meta::ContainerValue<Con>, meta::ContainerReference<Con>>)
18 constexpr auto operator()(Con&& container, Op op) const {
19 return (*this)(container::begin(container), container::end(container), util::ref(op));
20 }
21 };
22}
23
24constexpr inline auto fold_left_first = function::curry_back(detail::FoldLeftFirstFunction {}, meta::c_<2ZU>);
25}
26
27namespace di {
29}
constexpr auto last(concepts::detail::ConstantVector auto &vector, size_t count)
Definition vector_last.h:13
constexpr auto first(concepts::detail::ConstantVector auto &vector, size_t count)
Definition vector_first.h:13
Definition sequence.h:12
constexpr auto fold_left_first
Definition fold_left_first.h:24
constexpr auto end
Definition end.h:55
constexpr auto fold_left_first_with_iter
Definition fold_left_first_with_iter.h:44
constexpr auto begin
Definition begin.h:52
constexpr auto curry_back
Definition curry_back.h:141
IteratorReference< ContainerIterator< T > > ContainerReference
Definition container_reference.h:8
constexpr auto c_
A value of type Constexpr<val>.
Definition constexpr.h:252
decltype(*util::declval< T const & >()) IteratorReference
Definition iterator_reference.h:7
decltype(container::begin(util::declval< T & >())) ContainerIterator
Definition container_iterator.h:8
constexpr auto ref
Definition reference_wrapper.h:98
Definition any_storable.h:9