8template<
typename F,
typename T,
typename R>
9concept UnaryFunction = std::invocable<F, T> && std::convertible_to<std::invoke_result_t<F,T>, R>;
11template<
typename T,
typename R>
14template<
typename F,
typename T,
typename U,
typename R>
15concept BiFunction = std::invocable<F, T, U> && std::convertible_to<std::invoke_result_t<F,T,U>, R>;
17template<
typename T,
typename U,
typename R>
20template<
typename F,
typename T>
26template<
typename F,
typename T>
33using BiOperator_t = std::function<T(
const T &,
const T &)>;
35template<
typename F,
typename T>
41template<
typename F,
typename T,
typename R= T>
44template<
typename T,
typename R = T>
47template<
typename F,
typename T>
48concept Producer = std::invocable<F> && std::convertible_to<std::invoke_result_t<F>, T>;
53template<
typename F,
typename T>
60concept Runnable = std::convertible_to<F,std::function<void()>>;
62template<
typename Hasher,
typename Key>
65template<
typename F,
typename RangeType,
typename ResultType = std::ranges::range_value_t<RangeType>>
68template<
typename RangeType,
typename ResultType = std::ranges::range_value_t<RangeType>>
72 constexpr bool inline operator()(
const auto & t)
const noexcept {
78 constexpr bool inline operator()(
const auto & t)
const noexcept {
84 constexpr bool inline operator()(
const auto & lhs,
const auto & rhs)
const noexcept {
90 constexpr bool inline operator()(
const auto & lhs,
const auto & rhs)
const noexcept {
97 constexpr T
inline operator()(
const T & t)
const noexcept {
103 constexpr void inline operator()(
const auto & t)
const noexcept {
115 return counter++ < limit;
Definition FunctionalConcepts.hpp:108
LimitPredicate(size_t limit)
Definition FunctionalConcepts.hpp:113
bool operator()(const auto &t) noexcept
Definition FunctionalConcepts.hpp:114
Definition FunctionalConcepts.hpp:15
Definition FunctionalConcepts.hpp:27
Definition FunctionalConcepts.hpp:42
Definition FunctionalConcepts.hpp:54
Definition FunctionalConcepts.hpp:63
Definition FunctionalConcepts.hpp:36
Definition FunctionalConcepts.hpp:48
Definition FunctionalConcepts.hpp:66
Definition FunctionalConcepts.hpp:60
Definition FunctionalConcepts.hpp:9
Definition FunctionalConcepts.hpp:21
Definition AlternativeKeyMap.hpp:4
UnaryFunction_t< T, void > Consumer_t
Definition FunctionalConcepts.hpp:57
std::function< T(const T &)> UnaryOperator_t
Definition FunctionalConcepts.hpp:24
std::function< T(const T &, const T &)> BiOperator_t
Definition FunctionalConcepts.hpp:30
std::function< R(const T &, const U &)> BiFunction_t
Definition FunctionalConcepts.hpp:18
std::function< T()> Producer_t
Definition FunctionalConcepts.hpp:51
std::function< ResultType(const RangeType &)> ReduceFunction_t
Definition FunctionalConcepts.hpp:69
std::function< R(const T &)> UnaryFunction_t
Definition FunctionalConcepts.hpp:12
std::function< bool(const T &)> Predicate_t
Definition FunctionalConcepts.hpp:39
std::function< bool(const T &, const R &)> BiPredicate_t
Definition FunctionalConcepts.hpp:45
Definition FunctionalConcepts.hpp:89
constexpr bool operator()(const auto &lhs, const auto &rhs) const noexcept
Definition FunctionalConcepts.hpp:90
Definition FunctionalConcepts.hpp:77
constexpr bool operator()(const auto &t) const noexcept
Definition FunctionalConcepts.hpp:78
Definition FunctionalConcepts.hpp:95
constexpr T operator()(const T &t) const noexcept
Definition FunctionalConcepts.hpp:97
Definition FunctionalConcepts.hpp:102
constexpr void operator()(const auto &t) const noexcept
Definition FunctionalConcepts.hpp:103
Definition FunctionalConcepts.hpp:83
constexpr bool operator()(const auto &lhs, const auto &rhs) const noexcept
Definition FunctionalConcepts.hpp:84
Definition FunctionalConcepts.hpp:71
constexpr bool operator()(const auto &t) const noexcept
Definition FunctionalConcepts.hpp:72