4#ifndef TETL_ALGORITHM_UPPER_BOUND_HPP
5#define TETL_ALGORITHM_UPPER_BOUND_HPP
7#include <etl/_functional/less.hpp>
8#include <etl/_iterator/advance.hpp>
9#include <etl/_iterator/distance.hpp>
10#include <etl/_iterator/iterator_traits.hpp>
24template <
typename ForwardIt,
typename T,
typename Compare>
25[[nodiscard]]
constexpr auto upper_bound(ForwardIt first, ForwardIt last, T
const& value, Compare comp) -> ForwardIt
27 auto count =
etl::distance(first, last);
30 auto step = count / 2;
31 etl::advance(it, step);
32 if (
not comp(value, *it)) {
43template <
typename ForwardIt,
typename T>
44[[nodiscard]]
constexpr auto upper_bound(ForwardIt first, ForwardIt last, T
const& value) -> ForwardIt
46 return etl::upper_bound(first, last, value,
etl::
less());
constexpr auto upper_bound(ForwardIt first, ForwardIt last, T const &value) -> ForwardIt
Definition upper_bound.hpp:44
constexpr auto upper_bound(ForwardIt first, ForwardIt last, T const &value, Compare comp) -> ForwardIt
Definition upper_bound.hpp:25
Definition adjacent_find.hpp:9
Function object for performing comparisons. Unless specialised, invokes operator< on type T....
Definition less.hpp:15