33 template<
class I,
class S,
class T>
36 traits::is_input_iterator_v<I> &&
37 traits::is_sentinel_for_v<S, I> &&
38 traits::is_indirectly_binary_invocable_v<std::equal_to<>,
T*,
I>
42 for(; first != last; ++first) {
63 template<
class E,
class P,
class I,
class S,
class T>
66 traits::is_executor_v<E> &&
67 traits::is_partitioner_v<P, I, S> &&
68 traits::is_input_iterator_v<I> &&
69 traits::is_sentinel_for_v<S, I> &&
70 traits::is_indirectly_binary_invocable_v<std::equal_to<>,
T *,
I>
73 if constexpr(traits::is_inline_executor_v<E>) {
74 co_return run(first, last,
v);
A partitioner is a light callable object that takes a pair of iterators and returns the middle of the...
Identify traits for algorithms, like we do for other types.
Functor representing the overloads for the count function.
Definition Count.hpp:21
static constexpr traits::iter_difference_t< I > run(I first, S last, const T &v)
Complete overload of the count algorithm.
Definition Count.hpp:40
static Async< traits::iter_difference_t< I > > run(const E &executor, P p, I first, S last, const T &v)
Complete overload of the count algorithm.
Definition Count.hpp:72
Definition CountIf.hpp:26
Async< traits::iter_difference_t< I > > launch(P p, I first, S last, Fun f)
Definition CountIf.hpp:33
Value-compare algorithm overloads.
Definition ValueCompareAlgorithm.hpp:32
typename iter_difference< T >::type iter_difference_t
A C++17 type trait equivalent to the C++20 iter_difference concept.
Definition iter_difference.hpp:85
Definition Application.hpp:19
cti::continuable< Args... > Async
Defines a non-copyable continuation type which uses the function2 backend for type erasure.
Definition Async.hpp:22
constexpr CountAlgorithmFunctor count
Returns the number of elements matching an element.
Definition Count.hpp:82
constexpr size_t hash(const T &v)
Generates a hash for the provided type.
Definition Hash.hpp:25