Iros
 
Loading...
Searching...
No Matches
find_last_if_not.h
Go to the documentation of this file.
1#pragma once
2
4
5namespace di::container {
6namespace detail {
8 template<concepts::InputIterator Iter, concepts::SentinelFor<Iter> Sent, typename Proj = function::Identity,
9 concepts::IndirectUnaryPredicate<meta::Projected<Iter, Proj>> Pred>
10 constexpr auto operator()(Iter first, Sent last, Pred pred, Proj proj = {}) const -> View<Iter> {
12 auto rlast = make_reverse_iterator(first);
14 if (it == rlast) {
15 return { last, last };
16 }
17 return { container::prev(it.base()), last };
18 } else {
19 Iter result {};
20 for (; first != last; ++first) {
21 if (!function::invoke(pred, function::invoke(proj, *first))) {
22 result = first;
23 }
24 }
25 return { result == Iter {} ? first : result, first };
26 }
27 }
28
29 template<concepts::InputContainer Con, typename Proj = function::Identity,
30 concepts::IndirectUnaryPredicate<meta::Projected<meta::ContainerIterator<Con>, Proj>> Pred>
31 constexpr auto operator()(Con&& container, Pred pred, Proj proj = {}) const -> meta::BorrowedIterator<Con> {
33 }
34 };
35}
36
38}
39
40namespace di {
42}
Definition view.h:35
Definition bidirectional_iterator.h:8
Definition core.h:114
Definition sequence.h:13
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 prev
Definition prev.h:28
constexpr auto find_last_if_not
Definition find_last_if_not.h:37
constexpr auto make_reverse_iterator(Iter iter)
Definition reverse_iterator.h:110
constexpr auto find_if_not
Definition find_if_not.h:31
constexpr auto end
Definition end.h:47
constexpr auto begin
Definition begin.h:44
constexpr auto invoke
Definition invoke.h:100
Conditional< concepts::BorrowedContainer< Con >, ContainerIterator< Con >, container::Dangling > BorrowedIterator
Definition borrowed_iterator.h:11
constexpr auto ref
Definition reference_wrapper.h:98
Definition zstring_parser.h:9
constexpr auto proj
Definition proj.h:59
Definition find_last_if_not.h:7
constexpr auto operator()(Con &&container, Pred pred, Proj proj={}) const -> meta::BorrowedIterator< Con >
Definition find_last_if_not.h:31
constexpr auto operator()(Iter first, Sent last, Pred pred, Proj proj={}) const -> View< Iter >
Definition find_last_if_not.h:10