Iros
 
Loading...
Searching...
No Matches
fold_right_last.h
Go to the documentation of this file.
1#pragma once
2
8
9namespace di::container {
10namespace detail {
12 template<concepts::BidirectionalIterator It, concepts::SentinelFor<It> Sent,
13 concepts::IndirectlyBinaryRightFoldable<meta::IteratorValue<It>, It> Op>
15 constexpr auto operator()(It first, Sent last, Op op) const {
17 using Res = Optional<R>;
18 if (first == last) {
19 return Res();
20 }
21 auto it_last = container::prev(container::next(first, last));
22 return Res(in_place, container::fold_right(util::move(first), it_last, meta::IteratorValue<It>(*it_last),
23 util::ref(op)));
24 }
25
29 constexpr auto operator()(Con&& container, Op op) const {
31 }
32 };
33}
34
36}
37
38namespace di {
40}
Definition optional_forward_declaration.h:5
Definition bidirectional_container.h:8
Definition operations.h:11
Definition indirectly_binary_right_foldable.h:22
Definition sequence.h:13
Definition sequence.h:12
constexpr auto prev
Definition prev.h:28
constexpr auto next
Definition next.h:35
constexpr auto fold_right_last
Definition fold_right_last.h:35
constexpr auto end
Definition end.h:47
constexpr auto fold_right
Definition fold_right.h:33
constexpr auto begin
Definition begin.h:44
Conditional< concepts::LanguageArray< RemoveReference< T > >, RemoveExtent< RemoveReference< T > > *, Conditional< concepts::LanguageFunction< RemoveReference< T > >, AddPointer< RemoveReference< T > >, RemoveCVRef< T > > > Decay
Definition language.h:574
IteratorReference< ContainerIterator< T > > ContainerReference
Definition container_reference.h:8
meta::Type< decltype(container::iterator_value(types::in_place_type< meta::RemoveCVRef< T > >))> IteratorValue
Definition iterator_value.h:8
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 zstring_parser.h:9
constexpr auto in_place
Definition in_place.h:8
Definition fold_right_last.h:11