13 #ifndef RANGES_V3_ALGORITHM_AUX_EQUAL_RANGE_N_HPP
14 #define RANGES_V3_ALGORITHM_AUX_EQUAL_RANGE_N_HPP
30 #include <range/v3/utility/static_const.hpp>
33 #include <range/v3/detail/prologue.hpp>
41 template(
typename I,
typename V,
typename R =
less,
typename P =
identity)(
42 requires forward_iterator<I> AND
45 iter_difference_t<I> dist,
55 auto middle = ranges::next(
first, half);
57 auto && pv =
invoke(proj, (decltype(v) &&)v);
60 first = std::move(++middle);
63 else if(
invoke(pred, val, pv))
69 return {lower_bound_n(std::move(
first),
74 upper_bound_n(ranges::next(middle),
90 #include <range/v3/detail/epilogue.hpp>
CPP_concept indirect_strict_weak_order
\concept indirect_strict_weak_order
Definition: concepts.hpp:689
RANGES_INLINE_VARIABLE(detail::to_container_fn< detail::from_range< std::vector >>, to_vector) template< template< typename... > class ContT > auto to(RANGES_HIDDEN_DETAIL(detail
For initializing a container of the specified type with the elements of an Range.
Definition: conversion.hpp:399
typename Fn::template invoke< Args... > invoke
Evaluate the invocable Fn with the arguments Args.
Definition: meta.hpp:541
front< Pair > first
Retrieve the first element of the pair Pair.
Definition: meta.hpp:2251
bool_<(T::type::value< U::type::value)> less
A Boolean integral constant wrapper around true if T::type::value is less than U::type::value; false,...
Definition: meta.hpp:255
Definition: equal_range_n.hpp:40
Definition: identity.hpp:25
Definition: subrange.hpp:196