5 #ifndef VCCC_ALGORITHM_RANGES_FIND_LAST_HPP_
6 #define VCCC_ALGORITHM_RANGES_FIND_LAST_HPP_
34 struct find_last_niebloid {
35 template<
typename I,
typename S,
typename T,
typename Proj = identity, std::enable_if_t<conjunction<
39 indirect_binary_predicate<equal_to, projected<I, Proj>,
const T*>
41 constexpr subrange<I> operator()(I
first, S last,
const T&
value, Proj proj = {})
const {
55 template<
typename R,
typename T,
typename Proj = identity, std::enable_if_t<conjunction<
57 projectable<iterator_t<R>, Proj>,
58 indirect_binary_predicate<equal_to, projected<iterator_t<R>, Proj>,
const T*>
60 constexpr borrowed_subrange_t<R> operator()(R&& r,
const T&
value, Proj proj = {})
const {
65 struct find_last_if_niebloid {
66 template<
typename I,
typename S,
typename Proj = identity,
typename Pred, std::enable_if_t<conjunction<
70 indirect_unary_predicate<Pred, projected<I, Proj>>
72 constexpr subrange<I> operator()(I
first, S last, Pred pred, Proj proj = {})
const {
86 template<
typename R,
typename Proj = identity,
typename Pred, std::enable_if_t<conjunction<
88 projectable<iterator_t<R>, Proj>,
89 indirect_unary_predicate<Pred, projected<iterator_t<R>, Proj>>
91 constexpr borrowed_subrange_t<R> operator()(R&& r, Pred pred, Proj proj = {})
const {
96 struct find_last_if_not_niebloid {
97 template<
typename I,
typename S,
typename Proj = identity,
typename Pred, std::enable_if_t<conjunction<
100 projectable<I, Proj>,
101 indirect_unary_predicate<Pred, projected<I, Proj>>
103 constexpr subrange<I> operator()(I
first, S last, Pred pred, Proj proj = {})
const {
117 template<
typename R,
typename Proj = identity,
typename Pred, std::enable_if_t<conjunction<
119 projectable<iterator_t<R>, Proj>,
120 indirect_unary_predicate<Pred, projected<iterator_t<R>, Proj>>
122 constexpr borrowed_subrange_t<R> operator()(R&& r, Pred pred, Proj proj = {})
const {
constexpr VCCC_INLINE_OR_STATIC detail::find_last_if_niebloid find_last_if
Definition: find_last.hpp:133
constexpr VCCC_INLINE_OR_STATIC detail::find_last_niebloid find_last
Definition: find_last.hpp:132
constexpr VCCC_INLINE_OR_STATIC detail::find_last_if_not_niebloid find_last_if_not
Definition: find_last.hpp:134
constexpr invoke_result_t< F, Args... > invoke(F &&f, Args &&... args) noexcept(is_nothrow_invocable< F, Args... >::value)
Definition: invoke.hpp:38
constexpr VCCC_INLINE_OR_STATIC detail::next_niebloid next
Definition: next.hpp:65
constexpr VCCC_INLINE_OR_STATIC detail::begin_niebloid begin
returns an iterator to the beginning of a range
Definition: begin.hpp:116
constexpr VCCC_INLINE_OR_STATIC detail::end_niebloid end
returns a sentinel indicating the end of a range
Definition: end.hpp:120
#define VCCC_INLINE_OR_STATIC
Definition: inline_or_static.hpp:9
Definition: directory.h:12
constexpr VCCC_INLINE_OR_STATIC detail::element_niebloid< 0 > first
Definition: key_value.hpp:34
constexpr VCCC_INLINE_OR_STATIC detail::element_niebloid< 1 > value
Definition: key_value.hpp:35