MySQL 9.6.0
Source Code Documentation
mysql::sets::Is_boundary_storage Concept Reference

True if Test is a readable boundary storage, i.e., an object that can be used as the back-end storage for a boundary container. More...

#include <boundary_set_meta.h>

Concept definition

template<class Test>
True if Test is a readable boundary storage, i.e., an object that can be used as the back-end storage...
Definition: boundary_set_meta.h:342
True if Test satisfiesIs_boundary_storagewithElement_tas its element type, assuming thatIterator_tand...
Definition: boundary_set_meta.h:270
std::remove_cvref_t< decltype(std::declval< const Range_t >().begin())> Range_const_iterator_type
Gives the const_iterator type, deduced from the begin() const member.
Definition: meta.h:47
std::remove_cvref_t< decltype(std::declval< Range_t >().begin())> Range_iterator_type
Gives the iterator type, deduced from the begin() member.
Definition: meta.h:42

Detailed Description

True if Test is a readable boundary storage, i.e., an object that can be used as the back-end storage for a boundary container.

This requires the following, where storage is an object of type Test:

  • Is_readable_boundary_storage<Test>.
  • storage.clear(), storage.insert(i, v1, v2), storage.erase(i1, i2), and storage.update_point(i, v1) are defined.
  • Test::has_fast_insertion is a static constexpr bool member variable.

In addition, the following semantic requirements must hold:

  • After storage.clear(), storage.empty() is true.
  • storage.insert(i, v1, v2) shall insert v1 and v2 just before i, provided all the following are true:
    • v1 < v2
    • i==begin() or the element preceding i is strictly less than v1.
    • i==end() or *i > v2. (Otherwise the effect of storage.insert(i, v1, v2) is undefined.)
  • storage.erase(i1, i2) shall remove all elements between i1, inclusive, and i2, exclusive, provided std::ranges::distance(i1, i2) is even. (If the distance is odd, storage.insert(i, v1, v2) is undefined.)
  • has_fast_insertion is true if insertion at a random position has time and space complexity O(log(N)) (possibly expected, amortized); false otherwise.