42 using TraitsType =
typename inherited::TraitsType;
43 using KeyExtractorType =
typename inherited::KeyExtractorType;
44 using KeyEqualityComparerType =
typename inherited::KeyEqualityComparerType;
45 using KeyThreeWayComparerType =
typename inherited::KeyThreeWayComparerType;
46 using KeyType =
typename inherited::KeyType;
47 using key_type =
typename inherited::key_type;
48 using value_type =
typename inherited::value_type;
51 template <IThreeWayComparer<KEY_TYPE> KEY_COMPARER = compare_three_way>
52 struct SKIPLIST_ELT_COMPARER {
53 SKIPLIST_ELT_COMPARER (
const KeyExtractorType& keyExtractor,
const KEY_COMPARER& keyComparer = KEY_COMPARER{})
54 : fKeyExtractor{keyExtractor}
55 , fKeyComparer{keyComparer}
58 constexpr auto operator() (
const T& l,
const T& r)
const
60 return fKeyComparer (fKeyExtractor (l), fKeyExtractor (r));
62 constexpr auto operator() (
const KEY_TYPE& l,
const T& r)
const
64 return fKeyComparer (l, fKeyExtractor (r));
66 constexpr auto operator() (
const T& l,
const KEY_TYPE& r)
const
68 return fKeyComparer (fKeyExtractor (l), r);
70 constexpr auto operator() (
const KEY_TYPE& l,
const KEY_TYPE& r)
const
72 return fKeyComparer (l, r);
74 [[no_unique_address]] KeyExtractorType fKeyExtractor;
75 [[no_unique_address]] KEY_COMPARER fKeyComparer;
81 template <IThreeWayComparer<KEY_TYPE> KEY_COMPARER = compare_three_way>
88 template <IThreeWayComparer<KEY_TYPE> KEY_COMPARER = compare_three_way>
92 template <IThreeWayComparer<KEY_TYPE> COMPARER = compare_three_way>
97 template <IThreeWayComparer<KEY_TYPE> COMPARER = compare_three_way>
99 template <IIterableOfTo<T> ITERABLE_OF_ADDABLE, IThreeWayComparer<KEY_TYPE> COMPARER = equal_to<KEY_TYPE>>
101 not derived_from<remove_cvref_t<ITERABLE_OF_ADDABLE>, SortedKeyedCollection_SkipList<T, KEY_TYPE, TRAITS>>)
102 SortedKeyedCollection_SkipList (ITERABLE_OF_ADDABLE&& src)
103#if qCompilerAndStdLib_RequiresNotMatchInlineOutOfLineForTemplateClassBeingDefined_Buggy
104 : SortedKeyedCollection_SkipList{KeyExtractorType{}, COMPARER{}}
107 AssertRepValidType_ ();
111 template <IIterableOfTo<T> ITERABLE_OF_ADDABLE, IThreeWayComparer<KEY_TYPE> COMPARER = compare_three_way>
112 SortedKeyedCollection_SkipList (COMPARER&& keyComparer, ITERABLE_OF_ADDABLE&& src)
113 requires (IKeyedCollection_ExtractorCanBeDefaulted<T, KEY_TYPE, TRAITS>);
114 template <IThreeWayComparer<KEY_TYPE> COMPARER, IIterableOfTo<T> ITERABLE_OF_ADDABLE>
115 SortedKeyedCollection_SkipList (
const KeyExtractorType& keyExtractor, COMPARER&& keyComparer, ITERABLE_OF_ADDABLE&& src);
116 template <IInputIterator<T> ITERATOR_OF_ADDABLE, IThreeWayComparer<KEY_TYPE> COMPARER = compare_three_way>
117 SortedKeyedCollection_SkipList (ITERATOR_OF_ADDABLE&& start, ITERATOR_OF_ADDABLE&& end)
118 requires (IKeyedCollection_ExtractorCanBeDefaulted<T, KEY_TYPE, TRAITS>);
119 template <IInputIterator<T> ITERATOR_OF_ADDABLE, IThreeWayComparer<KEY_TYPE> COMPARER = compare_three_way>
120 SortedKeyedCollection_SkipList (COMPARER&& keyComparer, ITERATOR_OF_ADDABLE&& start, ITERATOR_OF_ADDABLE&& end)
121 requires (IKeyedCollection_ExtractorCanBeDefaulted<T, KEY_TYPE, TRAITS>);
122 template <IThreeWayComparer<KEY_TYPE> COMPARER, IInputIterator<T> ITERATOR_OF_ADDABLE>
123 SortedKeyedCollection_SkipList (
const KeyExtractorType& keyExtractor, COMPARER&& keyComparer, ITERATOR_OF_ADDABLE&& start,
124 ITERATOR_OF_ADDABLE&& end);
129 nonvirtual SortedKeyedCollection_SkipList& operator= (SortedKeyedCollection_SkipList&&) noexcept = default;
130 nonvirtual SortedKeyedCollection_SkipList& operator= (const SortedKeyedCollection_SkipList&) = default;
133 using IImplRepBase_ = Private::SkipListBasedContainerIRep<typename SortedKeyedCollection<T, KEY_TYPE, TRAITS>::_IRep>;
134 template <qCompilerAndStdLib_ConstraintDiffersInTemplateRedeclaration_BWA (IThreeWayComparer<KEY_TYPE>) COMPARER>
138 nonvirtual
void AssertRepValidType_ () const;