11template<
typename Self,
typename T>
14template<
typename T,
typename Tag>
17 template<
typename... Args>
21 constexpr auto value() -> T& {
return m_value; }
27template<
typename Self,
typename T>
34 constexpr static void did_remove(
auto& self,
auto& node) {
40template<
typename Value,
typename Comp,
typename Tag, concepts::Allocator Alloc,
typename Interface,
bool is_multi>
42 :
public RBTree<Value, Comp, Tag, Interface, is_multi, OwningRBTree<Value, Comp, Tag, Alloc, Interface, is_multi>> {
45 RBTree<Value, Comp, Tag, Interface, is_multi, OwningRBTree<Value, Comp, Tag, Alloc, Interface, is_multi>>;
59 constexpr auto allocator() -> Alloc& {
return m_allocator; }
61 template<
typename U, concepts::Invocable F>
65 if constexpr (!is_multi) {
66 if (position.parent && this->compare(this->node_value(*position.parent), needle) == 0) {
67 return Result<Tuple<Iterator, bool>>(
Tuple(Iterator(position.parent,
false),
false));
73 if constexpr (!is_multi) {
74 return Tuple(Iterator(node,
false),
true);
76 return Iterator(node,
false);
81 template<
typename U, concepts::Invocable F>
85 if constexpr (!is_multi) {
86 if (position.parent && this->compare(this->node_value(*position.parent), needle) == 0) {
87 return Result<Tuple<Iterator, bool>>(
Tuple(Iterator(position.parent,
false),
false));
93 return Iterator(node,
false);
98 template<
typename... Args>
100 constexpr auto create_node(Args&&... args) {
104 return static_cast<Node*
>(pointer);
109 [[no_unique_address]] Alloc m_allocator {};
Definition const_iterator_impl.h:19
Definition owning_rb_tree.h:42
constexpr auto allocator() -> Alloc &
Definition owning_rb_tree.h:59
constexpr auto insert_with_factory(ConstIterator, U &&needle, F &&factory)
Definition owning_rb_tree.h:83
constexpr auto insert_with_factory(U &&needle, F &&factory)
Definition owning_rb_tree.h:63
Definition rb_tree_iterator.h:10
di::container::RBTree< Value, Comp, Tag, Interface, is_multi, OwningRBTree< Value, Comp, Tag, Alloc, Interface, is_multi > >::RBTree RBTree()=default
di::container::RBTree< Value, Comp, Tag, Interface, is_multi, OwningRBTree< Value, Comp, Tag, Alloc, Interface, is_multi > >::insert_node constexpr auto insert_node(Node &node)
Definition rb_tree.h:89
di::container::RBTree< Value, Comp, Tag, Interface, is_multi, OwningRBTree< Value, Comp, Tag, Alloc, Interface, is_multi > >::insert_position constexpr auto insert_position(U &&needle) const -> InsertPosition
Definition rb_tree.h:267
Definition tuple_forward_declaration.h:5
Definition operations.h:11
constexpr auto invoke
Definition invoke.h:100
constexpr auto destroy_at
Definition destroy_at.h:24
constexpr auto construct_at
Definition construct_at.h:27
constexpr auto allocate_one
Definition allocate_one.h:29
constexpr auto as_fallible
Definition as_fallible.h:26
constexpr auto try_infallible
Definition try_infallible.h:31
constexpr auto in_place
Definition in_place.h:8
constexpr auto deallocate_one
Definition deallocate_one.h:27
Definition intrusive_tag_base.h:8
Definition owning_rb_tree.h:15
constexpr auto value() -> T &
Definition owning_rb_tree.h:21
constexpr OwningRBTreeNode(InPlace, Args &&... args)
Definition owning_rb_tree.h:19
Definition owning_rb_tree.h:28
static constexpr auto down_cast(InPlaceType< T >, Node &node) -> T &
Definition owning_rb_tree.h:32
static constexpr auto is_sized(InPlaceType< T >) -> bool
Definition owning_rb_tree.h:31
static constexpr void did_remove(auto &self, auto &node)
Definition owning_rb_tree.h:34
OwningRBTreeNode< T, Self > Node
Definition owning_rb_tree.h:29
Definition rb_tree_node.h:9
Definition in_place_type.h:5