24#ifndef MYSQL_SETS_BOUNDARY_SET_CONST_VIEWS_H
25#define MYSQL_SETS_BOUNDARY_SET_CONST_VIEWS_H
65template <Is_bounded_set_traits Set_traits_tp,
66 typename Set_traits_tp::Element_t... boundaries>
69 Const_boundary_view_iterator<Set_traits_tp, boundaries...>> {
73 static constexpr auto size =
sizeof...(boundaries);
74 using Array_t = std::array<Element_t, size>;
77 static_assert(
size % 2 == 0,
"Const_boundary_view size must be even.");
106 static const Array_t ret{boundaries...};
125template <Is_bounded_set_traits Set_traits_tp,
126 typename Set_traits_tp::Element_t... boundaries>
129 Const_boundary_view<Set_traits_tp, boundaries...>,
130 detail::Const_boundary_view_iterator<Set_traits_tp, boundaries...>,
131 detail::Const_boundary_view_iterator<Set_traits_tp, boundaries...>,
138 using Less_t =
typename Set_traits_t::Less_t;
152 template <
class Iter_t>
156 return std::upper_bound(hint,
self.
end(), element,
Less_t());
162 template <
class Iter_t>
166 return std::lower_bound(hint,
self.
end(), element,
Less_t());
171template <Is_bounded_set_traits Set_traits_tp>
177template <Is_bounded_set_traits Set_traits_tp>
180 Set_traits_tp::max_exclusive()> {};
CRTP base class (mixin) that makes your class a standard-compliant iterator, given only a minimal set...
Definition: iterator_interface.h:370
CRTP base class/mixin, used to implement Boundary Sets that are views.
Definition: boundary_set_interface.h:106
Boundary set view for which the values are defined at compile-time.
Definition: boundary_set_const_views.h:132
typename Set_traits_t::Less_t Less_t
Definition: boundary_set_const_views.h:138
static constexpr Iter_t upper_bound_impl(mysql::meta::Is_same_ignore_const< This_t > auto &self, const Iter_t &hint, const Element_t &element)
Only for internal use by the CRTP base class.
Definition: boundary_set_const_views.h:153
auto end() const
Definition: boundary_set_const_views.h:147
typename Set_traits_t::Element_t Element_t
Definition: boundary_set_const_views.h:137
detail::Const_boundary_view_iterator< Set_traits_tp, boundaries... > Iterator_t
Definition: boundary_set_const_views.h:140
Set_traits_tp Set_traits_t
Definition: boundary_set_const_views.h:136
static constexpr Iter_t lower_bound_impl(mysql::meta::Is_same_ignore_const< This_t > auto &self, const Iter_t &hint, const Element_t &element)
Only for internal use by the CRTP base class.
Definition: boundary_set_const_views.h:163
auto begin() const
Definition: boundary_set_const_views.h:144
Forward declaration of primary template for views over empty sets.
Definition: base_const_views.h:46
Forward declaration of primary template for views over "full" sets, i.e., the complement of the empty...
Definition: base_const_views.h:72
Contiguous iterator over a Const_boundary_view.
Definition: boundary_set_const_views.h:69
Const_boundary_view_iterator() noexcept=default
Construct an iterator to the beginning.
int m_position
Definition: boundary_set_const_views.h:112
static constexpr auto size
Definition: boundary_set_const_views.h:73
std::contiguous_iterator_tag Iterator_category_t
Definition: boundary_set_const_views.h:75
Set_traits_t::Element_t Element_t
Definition: boundary_set_const_views.h:72
constexpr const Element_t * get_pointer() const
Return the boundary at the current position.
Definition: boundary_set_const_views.h:86
std::array< Element_t, size > Array_t
Definition: boundary_set_const_views.h:74
constexpr bool is_endpoint() const
Return true if the current position is an endpoint.
Definition: boundary_set_const_views.h:100
constexpr std::ptrdiff_t distance_from(const Const_boundary_view_iterator &other) const
Return the distance from the other iterator to this one.
Definition: boundary_set_const_views.h:94
constexpr void advance(std::ptrdiff_t delta)
Move the position forward by the given number of steps.
Definition: boundary_set_const_views.h:91
Set_traits_tp Set_traits_t
Definition: boundary_set_const_views.h:71
static const Array_t & array()
Return an array of the values.
Definition: boundary_set_const_views.h:105
Definition: gtid_set.h:183
noexcept
The return type for any call_and_catch(f, args...) call where f(args...) returns Type.
Definition: call_and_catch.h:76
Tag to identify a class as a Boundary set.
Definition: boundary_set_category.h:41