Iros
 
Loading...
Searching...
No Matches
mismatch.h
Go to the documentation of this file.
1#pragma once
2
6#include "di/function/equal.h"
8#include "di/util/move.h"
10
11namespace di::container {
12namespace detail {
14 template<concepts::InputIterator It, concepts::SentinelFor<It> Sent, concepts::InputIterator Jt,
15 concepts::SentinelFor<Jt> Jent, typename Pred = function::Equal, typename Proj = function::Identity,
16 typename Jroj = function::Identity>
18 constexpr auto operator()(It it, Sent ed, Jt jt, Jent fd, Pred pred = {}, Proj proj = {}, Jroj jroj = {}) const
19 -> InInResult<It, Jt> {
20 for (; it != ed && jt != fd; ++it, ++jt) {
21 if (!function::invoke(pred, function::invoke(proj, *it), function::invoke(jroj, *jt))) {
22 break;
23 }
24 }
25 return { util::move(it), util::move(jt) };
26 }
27
28 template<concepts::InputContainer Con, concepts::InputContainer Jon, typename Pred = function::Equal,
29 typename Proj = function::Identity, typename Jroj = function::Identity>
30 requires(concepts::IndirectlyComparable<meta::ContainerIterator<Con>, meta::ContainerIterator<Jon>, Pred, Proj,
31 Jroj>)
32 constexpr auto operator()(Con&& con, Jon&& jon, Pred pred = {}, Proj proj = {}, Jroj jroj = {}) const
34 return (*this)(container::begin(con), container::end(con), container::begin(jon), container::end(jon),
35 util::ref(pred), util::ref(proj), util::ref(jroj));
36 }
37 };
38}
39
40constexpr inline auto mismatch = detail::MismatchFunction {};
41}
42
43namespace di {
45}
Definition indirectly_comparable.h:10
Definition sequence.h:13
Definition sequence.h:12
constexpr auto mismatch
Definition mismatch.h:40
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
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 proj
Definition proj.h:59