24#ifndef MYSQL_SETS_NESTED_SET_META_H
25#define MYSQL_SETS_NESTED_SET_META_H
66 std::same_as<
typename Test::Set_traits_t::Key_traits_t,
67 typename Test::Key_traits_t> &&
68 std::same_as<
typename Test::Set_traits_t::Mapped_traits_t,
69 typename Test::Mapped_traits_t> &&
70 std::same_as<
typename Test::Set_traits_t::Mapped_category_t,
71 typename Test::Mapped_category_t> &&
72 std::same_as<
typename Test::Set_traits_t::Key_traits_t::Element_t,
73 typename Test::Key_t> &&
75 Test, std::pair<const typename Test::Key_t, typename Test::Mapped_t>> &&
76 requires(Test t,
const Test ct,
typename Test::Key_t k) {
77 { t.find(k) } -> std::same_as<mysql::ranges::Range_iterator_type<Test>>;
80 } -> std::same_as<mysql::ranges::Range_const_iterator_type<Test>>;
113 requires(Test t,
const Test ct,
typename Test::Key_t k) {
117 typename Test::Set_traits_t::Mapped_category_t,
118 typename Test::Set_traits_t::Mapped_traits_t>;
122 typename Test::Set_traits_t::Mapped_category_t,
123 typename Test::Set_traits_t::Mapped_traits_t>;
127template <
class Test,
class Set_traits_t>
133template <
class Test,
class Set_traits_t>
156 requires(Test t,
const Test ct,
typename Test::Key_t k,
162 { t.erase(it) } -> std::same_as<mysql::ranges::Range_iterator_type<Test>>;
166template <
class Test,
class Set_traits_t>
174 requires(Test t, Test ct,
typename Test::Key_t k,
typename Test::Mapped_t m,
180 t.inplace_union(k, m);
182 t.inplace_intersect(t);
183 t.inplace_intersect(k, m);
184 t.inplace_intersect(k);
186 t.inplace_subtract(t);
187 t.inplace_subtract(k, m);
188 t.inplace_subtract(k);
189 t.inplace_subtract(it, k);
198template <
class Source_t,
class Target_t>
201 requires(Source_t
source, Target_t target,
205 target.steal_and_insert(target_it,
source, source_it)
207 -> std::same_as<mysql::ranges::Range_iterator_type<Target_t>>;
210 typename Target_t::Mapped_t>;
214template <
class Source_t,
class Target_t>
218 typename Target_t::Storage_t>;
225template <
class Source_t,
class Target_t>
234template <
class Source_t,
class Target_t>
True if Test models Is_collection, with Value_t as its value type.
Definition: meta.h:131
True if move-semantics has been declared as enabled for inplace_union/inplace_intersect/inplace_subtr...
Definition: meta.h:107
True if Test has a member Set_category_t satisfying Is_set_category.
Definition: set_categories.h:55
True if Test has a member Set_traits_t.
Definition: set_traits.h:59
Definition: nested_set_meta.h:172
Definition: nested_set_meta.h:134
True if Test satisfies Is_nested_set and its traits is Set_traits_t.
Definition: nested_set_meta.h:128
True if Test is a Set Traits class for a nested set.
Definition: nested_set_meta.h:51
True if Test is a nested set.
Definition: nested_set_meta.h:110
True if Test is a Nested Storage and its traits equals Set_traits_t.
Definition: nested_set_meta.h:167
True if Test is a Nested Set Storage.
Definition: nested_set_meta.h:154
True if Test is an "ordered" Set traits class.
Definition: set_traits.h:88
True if Test is a Set category tag, i.e., derived from Base_set_category_tag.
Definition: set_categories.h:48
True if Test is a reference to a set with category Category_t and traits Traits_t.
Definition: set_categories_and_traits.h:69
True if Test is a Set_traits class, i.e., is derived from Base_set_traits.
Definition: set_traits.h:50
True if Test is a set.
Definition: set_categories_and_traits.h:62
Common helper for Is_nested_set and Is_nested_storage.
Definition: nested_set_meta.h:64
Helper concept to define the condition when Enable_donate_set_elements shall be defined for Nested Co...
Definition: nested_set_meta.h:215
Helper concept to define the condition when Enable_donate_set_elements shall be defined for Nested St...
Definition: nested_set_meta.h:199
Definition: fts0fts.cc:236
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
Definition: gtid_set.h:183
repeated Source source
Definition: replication_asynchronous_connection_failover.proto:42
Customization point that set container types can use to indicate that they support noexcept move-sema...
Definition: meta.h:101