True if Test satisfies the requirements for being a subclass of Upper_lower_bound_interface.
More...
#include <upper_lower_bound_interface.h>
template<class Test, class Iterator_t, class Const_iterator_t, class Element_t>
std::forward_iterator<Iterator_t> &&
std::forward_iterator<Const_iterator_t> &&
requires(Test implementation, const Test const_implementation,
Iterator_t iterator, Const_iterator_t const_iterator,
Element_t element) {
{ implementation.begin() } -> std::same_as<Iterator_t>;
{ implementation.end() } -> std::same_as<Iterator_t>;
{ const_implementation.begin() } -> std::same_as<Const_iterator_t>;
{ const_implementation.end() } -> std::same_as<Const_iterator_t>;
} &&
detail::Has_lower_bound_impl<Test, Iterator_t, Element_t> &&
detail::Has_lower_bound_impl<const Test, Const_iterator_t, Element_t> &&
detail::Has_upper_bound_impl<Test, Iterator_t, Element_t> &&
detail::Has_upper_bound_impl<const Test, Const_iterator_t, Element_t>
True if Test satisfies the requirements for being a subclass of Upper_lower_bound_interface.
Definition: upper_lower_bound_interface.h:158
True if Test satisfies the requirements for being a subclass of Upper_lower_bound_interface.
It must define the following member functions. In each prototype, the hint parameter may be omitted.
Iterator_t
begin()
const;
static constexpr Iterator_t
lower_bound_impl(Test &self, const Iterator_t &hint,
const Element_t &element);
static constexpr Const_iterator_t
lower_bound_impl(const Test &self, const Const_iterator_t &hint,
const Element_t &element);
static constexpr Iterator_t
upper_bound_impl(Test &self, const Iterator_t &hint,
const Element_t &element);
static constexpr Const_iterator_t
upper_bound_impl(const Test &self, const Const_iterator_t &hint,
const Element_t &element);
const char * begin(const char *const c)
Definition: base64.h:44
Cursor end()
A past-the-end Cursor.
Definition: rules_table_service.cc:192