5 #ifndef VCCC_ALGORITHM_SEARCH_HPP 
    6 #define VCCC_ALGORITHM_SEARCH_HPP 
   30 struct search_niebloid {
 
   32   template<
typename R1, 
typename R2, 
typename Pred, 
typename Proj1, 
typename Proj2,
 
   33            bool = conjunction<forward_range<R1>, forward_range<R2>>
::value >
 
   34   struct check_range : std::false_type {};
 
   35   template<
typename R1, 
typename R2, 
typename Pred, 
typename Proj1, 
typename Proj2>
 
   36   struct check_range<R1, R2, Pred, Proj1, Proj2, true>
 
   37       : indirectly_comparable<iterator_t<R1>, iterator_t<R2>, Pred, Proj1, Proj2> {};
 
   41       typename I1, 
typename S1,
 
   42       typename I2, 
typename S2,
 
   43       typename Pred = equal_to, 
typename Proj1 = identity, 
typename Proj2 = identity,
 
   44       std::enable_if_t<conjunction<
 
   45           forward_iterator<I1>, sentinel_for<S1, I1>,
 
   46           forward_iterator<I2>, sentinel_for<S2, I2>,
 
   47           indirectly_comparable<I1, I2, Pred, Proj1, Proj2>
 
   50   constexpr subrange<I1>
 
   51   operator()(I1 first1, S1 last1, I2 first2, S2 last2, Pred pred = {}, Proj1 proj1 = {}, Proj2 proj2 = {}) 
const {
 
   55       for (;; ++it1, (void)++it2) {
 
   66     return {last1, last1};
 
   70       typename R1, 
typename R2,
 
   71       typename Pred = equal_to, 
typename Proj1 = identity, 
typename Proj2 = identity,
 
   74   constexpr borrowed_subrange_t<R1>
 
   75   operator()(R1&& r1, R2&& r2, Pred pred = {}, Proj1 proj1 = {}, Proj2 proj2 = {}) 
const {
 
   78                    std::move(pred), std::move(proj1), std::move(proj2));
 
constexpr VCCC_INLINE_OR_STATIC detail::search_niebloid search
Definition: search.hpp:87
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::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< 1 > value
Definition: key_value.hpp:35