Iros
 
Loading...
Searching...
No Matches
equal.h
Go to the documentation of this file.
1#pragma once
2
7#include "di/function/equal.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 -> bool {
21 if (container::distance(it, ed) != container::distance(jt, fd)) {
22 return false;
23 }
24 }
25 auto [lt, kt] =
26 mismatch(util::move(it), ed, util::move(jt), fd, util::ref(pred), util::ref(proj), util::ref(jroj));
27 return lt == ed && kt == fd;
28 }
29
30 template<concepts::InputContainer Con, concepts::InputContainer Jon, typename Pred = function::Equal,
31 typename Proj = function::Identity, typename Jroj = function::Identity>
32 requires(concepts::IndirectlyComparable<meta::ContainerIterator<Con>, meta::ContainerIterator<Jon>, Pred, Proj,
33 Jroj>)
34 constexpr auto operator()(Con&& con, Jon&& jon, Pred pred = {}, Proj proj = {}, Jroj jroj = {}) const -> bool {
36 if (container::size(con) != container::size(jon)) {
37 return false;
38 }
39 }
40 return (*this)(container::begin(con), container::end(con), container::begin(jon), container::end(jon),
41 util::ref(pred), util::ref(proj), util::ref(jroj));
42 }
43 };
44}
45
46constexpr inline auto equal = detail::EqualFunction {};
47}
Definition indirectly_comparable.h:10
Definition sized_container.h:8
Definition sized_sentinel_for.h:9
Definition sequence.h:13
Definition sequence.h:12
constexpr auto distance
Definition distance.h:44
constexpr auto size
Definition size.h:54
constexpr auto mismatch
Definition mismatch.h:40
constexpr auto equal
Definition equal.h:46
constexpr auto end
Definition end.h:47
constexpr auto begin
Definition begin.h:44
decltype(container::begin(util::declval< T & >())) ContainerIterator
Definition container_iterator.h:8
constexpr auto ref
Definition reference_wrapper.h:98
constexpr auto proj
Definition proj.h:59