Loading [MathJax]/extensions/tex2jax.js
Iros
 
All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Pages Concepts
Loading...
Searching...
No Matches
compare.h
Go to the documentation of this file.
1#pragma once
2
9
10namespace di::container {
11namespace detail {
13 template<concepts::InputIterator It, concepts::SentinelFor<It> Sent, concepts::InputIterator Jt,
14 concepts::SentinelFor<Jt> Jent, typename Comp = function::Compare, typename Proj = function::Identity,
15 typename Jroj = function::Identity>
17 constexpr auto operator()(It it, Sent ed, Jt jt, Jent fd, Comp comp = {}, Proj proj = {},
18 Jroj jroj = {}) const {
19 using Result = decltype(function::invoke(comp, function::invoke(proj, *it), function::invoke(jroj, *jt)));
20 for (; it != ed && jt != fd; ++it, ++jt) {
21 if (auto result = function::invoke(comp, function::invoke(proj, *it), function::invoke(jroj, *jt));
22 result != 0) {
23 return result;
24 }
25 }
26 return static_cast<Result>((jt == fd) <=> (it == ed));
27 }
28
29 template<concepts::InputContainer Con, concepts::InputContainer Jon, typename Comp = function::Compare,
30 typename Proj = function::Identity, typename Jroj = function::Identity>
31 requires(concepts::IndirectStrictPartialOrder<Comp, meta::Projected<meta::ContainerIterator<Con>, Proj>,
32 meta::Projected<meta::ContainerIterator<Jon>, Jroj>>)
33 constexpr auto operator()(Con&& con, Jon&& jon, Comp comp = {}, Proj proj = {}, Jroj jroj = {}) const {
34 return (*this)(container::begin(con), container::end(con), container::begin(jon), container::end(jon),
35 util::ref(comp), util::ref(proj), util::ref(jroj));
36 }
37 };
38}
39
40constexpr inline auto compare = detail::CompareFunction {};
41}
Definition indirect_strict_weak_order.h:21
Definition sequence.h:13
Definition sequence.h:12
constexpr auto compare
Definition compare.h:40
constexpr auto end
Definition end.h:47
constexpr auto begin
Definition begin.h:44
constexpr auto invoke
Definition invoke.h:100
constexpr auto ref
Definition reference_wrapper.h:98
Expected< T, Error > Result
Definition result.h:8
constexpr auto proj
Definition proj.h:59
Definition projected.h:16