5 #ifndef VCCC_ALGORITHM_RANGES_SET_INTERSECTION_HPP_
6 #define VCCC_ALGORITHM_RANGES_SET_INTERSECTION_HPP_
30 template<
class I1,
class I2,
class O >
35 struct set_intersection_niebloid {
37 template<
typename R1,
typename R2,
typename O,
typename Comp,
typename Proj1,
typename Proj2,
39 struct check_range : std::false_type {};
40 template<
typename R1,
typename R2,
typename O,
typename Comp,
typename Proj1,
typename Proj2>
41 struct check_range<R1, R2, O, Comp, Proj1, Proj2, true>
43 weakly_incrementable<O>,
44 mergeable<iterator_t<R1>, iterator_t<R2>, O, Comp, Proj1, Proj2>
49 typename I1,
typename S1,
50 typename I2,
typename S2,
62 operator()(I1 first1, S1 last1, I2 first2, S2 last2, O result, Comp comp = {}, Proj1 proj1 = {}, Proj2 proj2 = {})
const {
63 while (first1 != last1 && first2 != last2) {
83 typename R1,
typename R2,
89 check_range<R1, R2, O, Comp, Proj1, Proj2>
92 operator()(R1&& r1, R2&& r2, O result, Comp comp = {}, Proj1 proj1 = {}, Proj2 proj2 = {})
const {
95 std::move(result), std::move(comp),
96 std::move(proj1), std::move(proj2));
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::set_intersection_niebloid set_intersection
Definition: set_intersection.hpp:102
constexpr VCCC_INLINE_OR_STATIC detail::end_niebloid end
returns a sentinel indicating the end of a range
Definition: end.hpp:120
typename borrowed_iterator< R >::type borrowed_iterator_t
Definition: borrowed_iterator_t.hpp:36
#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
Definition: conjunction.hpp:22
function object that returns its argument unchanged
Definition: identity.hpp:25
Definition: mergeable.hpp:48
Definition: in_in_out_result.hpp:22
Definition: sentinel_for.hpp:24
Definition: weakly_incrementable.hpp:52