di 0.1.0
Loading...
Searching...
No Matches
contains.h
Go to the documentation of this file.
1#pragma once
2
4
5namespace di::container {
6namespace detail {
7 struct ContainsFunction {
8 template<concepts::InputIterator It, concepts::SentinelFor<It> Sent, typename T,
9 typename Proj = function::Identity>
10 requires(concepts::IndirectBinaryPredicate<function::Equal, meta::Projected<It, Proj>, T const*>)
11 constexpr auto operator()(It first, Sent last, T const& needle, Proj proj = {}) const -> bool {
12 return container::find(util::move(first), last, needle, util::ref(proj)) != last;
13 }
14
15 template<concepts::InputContainer Con, typename T, typename Proj = function::Identity>
16 requires(concepts::IndirectBinaryPredicate<function::Equal, meta::Projected<meta::ContainerIterator<Con>, Proj>,
17 T const*>)
18 constexpr auto operator()(Con&& container, T const& needle, Proj proj = {}) const -> bool {
19 return (*this)(container::begin(container), container::end(container), needle, util::ref(proj));
20 }
21 };
22}
23
24constexpr inline auto contains = detail::ContainsFunction {};
25}
26
27namespace di {
29}
constexpr auto last(concepts::detail::ConstantVector auto &vector, size_t count)
Definition vector_last.h:13
constexpr auto first(concepts::detail::ConstantVector auto &vector, size_t count)
Definition vector_first.h:13
Definition sequence.h:12
constexpr auto find
Definition find.h:35
constexpr auto end
Definition end.h:55
constexpr auto begin
Definition begin.h:52
constexpr auto contains
Definition contains.h:24
constexpr auto ref
Definition reference_wrapper.h:98
Definition any_storable.h:9
constexpr auto proj
Definition proj.h:59