template<class Test>
True if Test is an interval set, i.e., provides a view over intervals sorted by their endpoints,...
Definition: boundary_set_meta.h:209
True if Test is an interval set with Element_t as its element type, assuming that Iterator_t is its i...
Definition: boundary_set_meta.h:160
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
True if Test is an interval set, i.e., provides a view over intervals sorted by their endpoints, where each interval is nonempty, disjoint from other intervals, and even does not share endpoint with adjacent intervals.
It also provides ways to compute upper bounds of values, i.e., minimal boundary points in the set which are strictly greater than a given value, respectively greater than or equal to a given value.
This requires, given Test set, Test::iterator iterator, and Test::value_type value:
- Test satisfies mysql::containers::Is_set.
- Test::iterator satisfies Is_boundary_iterator_over<Test::value_type>.
- set.upper_bound(value), set.lower_bound(value) return Test::iterator.
- set.upper_bound(iterator, value), set.lower_bound(iterator, value) return Test::iterator.
In addition, the following semantic requirements must hold:
- set.size() is even.
- set.begin()->is_endpoint() == false.
- set.upper_bound(value) returns an iterator to the first point strictly greater than value, or set.end() if no such point exists.
- set.lower_bound(value) returns an iterator ot the first point greater than or equal to value, or set.end() if no such point exists.
- If iterator is before or equal to set.upper_bound(value), then set.upper_bound(iterator, value) == set.upper_bound(value). (Otherwise, the result is undefined.)
- If iterator is before or equal to set.lower_bound(value), then set.lower_bound(iterator, value) == set.lower_bound(value). (Otherwise, the result is undefined.)