18 template<
typename Comp,
typename Key>
19 struct TreeMapCompAdapter {
20 [[no_unique_address]] Comp comp {};
22 template<
typename U,
typename V1,
typename V2>
23 requires(concepts::StrictWeakOrder<Comp const&, Key, U>)
24 constexpr auto operator()(Tuple<Key, V1>
const& a, Tuple<U, V2>
const& b)
const {
28 template<
typename U,
typename V1,
typename V2>
29 requires(!concepts::SameAs<U, Key> && concepts::StrictWeakOrder<Comp const&, Key, U>)
30 constexpr auto operator()(Tuple<U, V1>
const& a, Tuple<Key, V2>
const& b)
const {
34 template<
typename U,
typename V1>
35 requires(concepts::StrictWeakOrder<Comp const&, Key, U>)
36 constexpr auto operator()(Tuple<Key, V1>
const& a, U
const& b)
const {
40 template<
typename U,
typename V2>
41 requires(concepts::StrictWeakOrder<Comp const&, Key, U>)
42 constexpr auto operator()(U
const& a, Tuple<Key, V2>
const& b)
const {
47 requires(concepts::StrictWeakOrder<Comp const&, Key, U>)
48 constexpr auto operator()(Key
const& a, U
const& b)
const {
53 requires(!concepts::SameAs<Key, U> && concepts::StrictWeakOrder<Comp const&, Key, U>)
54 constexpr auto operator()(U
const& a, Key
const& b)
const {
58 template<
typename T,
typename U>
59 requires(concepts::StrictWeakOrder<Comp const&, T, U>)
60 constexpr auto operator()(T
const& a, U
const& b)
const {
65 template<
typename Key,
typename Value>
66 struct TreeMapTag : OwningRBTreeTag<TreeMapTag<Key, Value>, Tuple<Key, Value>> {};
69template<
typename Key,
typename Value, concepts::StrictWeakOrder<Key> Comp = function::Compare,
70 concepts::Allocator Alloc = DefaultAllocator>
73 Tuple<Key, Value>, detail::TreeMapCompAdapter<Comp, Key>, detail::TreeMapTag<Key, Value>, Alloc,
75 TreeMap<Key, Value, Comp, Alloc>, Tuple<Key, Value>, Key, Value,
76 RBTreeIterator<Tuple<Key, Value>, detail::TreeMapTag<Key, Value>>,
77 container::ConstIteratorImpl<RBTreeIterator<Tuple<Key, Value>, detail::TreeMapTag<Key, Value>>>,
78 detail::RBTreeValidForLookup<Tuple<Key, Value>, detail::TreeMapCompAdapter<Comp, Key>>::template Type,
83 Tuple<Key, Value>, detail::TreeMapCompAdapter<Comp, Key>, detail::TreeMapTag<Key, Value>, Alloc,
88 detail::RBTreeValidForLookup<Tuple<Key, Value>, detail::TreeMapCompAdapter<Comp, Key>>::template Type,
95 TreeMap(Comp
const& comparator) : Base(detail::TreeMapCompAdapter<Comp, Key> { comparator }) {}
98template<concepts::InputContainer Con, concepts::TupleLike T = meta::ContainerValue<Con>>
103template<concepts::InputContainer Con, concepts::TupleLike T = meta::ContainerValue<Con>,
104 concepts::StrictWeakOrder<T> Comp>
Definition const_iterator_impl.h:19
Definition map_interface.h:21
Definition owning_rb_tree.h:42
Definition rb_tree_iterator.h:10
TreeMap(Comp const &comparator)
Definition tree_map.h:95
constexpr auto invoke
Definition invoke.h:100
di::meta::Decay< decltype(T)> Tag
Definition tag_invoke.h:28
constexpr auto get(T &&value) -> decltype(auto)
Definition get.h:8
Definition any_storable.h:9
constexpr tag_invoke_detail::TagInvokeFn tag_invoke
Definition tag_invoke.h:22
Definition in_place_template.h:5