14#ifndef RANGES_V3_ALGORITHM_AUX_UPPER_BOUND_N_HPP
15#define RANGES_V3_ALGORITHM_AUX_UPPER_BOUND_N_HPP
24#include <range/v3/utility/static_const.hpp>
26#include <range/v3/detail/prologue.hpp>
34 template<
typename Pred,
typename Val>
35 struct upper_bound_predicate
41 constexpr bool operator()(T && t)
const
43 return !
invoke(pred_, val_,
static_cast<T &&
>(t));
47 template<
typename Pred,
typename Val>
48 constexpr upper_bound_predicate<Pred, Val> make_upper_bound_predicate(Pred & pred,
65 template(
typename I,
typename V,
typename C =
less,
typename P =
identity)(
68 constexpr I operator()(I
first,
69 iter_difference_t<I> d,
74 return partition_point_n(std::move(
first),
76 detail::make_upper_bound_predicate(pred, val),
85#include <range/v3/detail/epilogue.hpp>
The forward_iterator concept.
The indirect_strict_weak_order concept.
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: upper_bound_n.hpp:59
Definition: identity.hpp:25