43 using KeyExtractorType =
typename inherited::KeyExtractorType;
44 using KeyEqualityComparerType =
typename inherited::KeyEqualityComparerType;
46 using KeyType =
typename inherited::KeyType;
47 using key_type =
typename inherited::key_type;
54 template <IInOrderComparer<KEY_TYPE> KEY_INORDER_COMPARER = less<key_type>>
56 static_assert (not is_reference_v<KEY_INORDER_COMPARER>);
58 SetInOrderComparer (
const KeyExtractorType& keyExtractor,
const KEY_INORDER_COMPARER& inorderComparer)
59 : fKeyExtractor_{keyExtractor}
60 , fKeyComparer_{inorderComparer}
63 int operator() (
const value_type& lhs,
const KEY_TYPE& rhs)
const
65 return fKeyComparer_ (fKeyExtractor_ (lhs), rhs);
67 int operator() (
const KEY_TYPE& lhs,
const value_type& rhs)
const
69 return fKeyComparer_ (lhs, fKeyExtractor_ (rhs));
71 int operator() (
const value_type& lhs,
const value_type& rhs)
const
73 return fKeyComparer_ (fKeyExtractor_ (lhs), fKeyExtractor_ (rhs));
75 [[no_unique_address]]
const KeyExtractorType fKeyExtractor_;
76 [[no_unique_address]]
const KEY_INORDER_COMPARER fKeyComparer_;
77 using is_transparent = int;
84 template <IInOrderComparer<KEY_TYPE> KEY_INORDER_COMPARER = less<key_type>>
89 template <IInOrderComparer<KEY_TYPE> KEY_INORDER_COMPARER = less<KEY_TYPE>>
94 template <IInOrderComparer<KEY_TYPE> KEY_INORDER_COMPARER = less<KEY_TYPE>>
96 template <IIterableOfTo<T> ITERABLE_OF_ADDABLE, IInOrderComparer<KEY_TYPE> KEY_INORDER_COMPARER = equal_to<KEY_TYPE>>
98 not derived_from<remove_cvref_t<ITERABLE_OF_ADDABLE>, SortedKeyedCollection_stdset<T, KEY_TYPE, TRAITS>>)
99 SortedKeyedCollection_stdset (ITERABLE_OF_ADDABLE&& src)
100#if qCompilerAndStdLib_RequiresNotMatchInlineOutOfLineForTemplateClassBeingDefined_Buggy
101 : SortedKeyedCollection_stdset{KeyExtractorType{}, KEY_INORDER_COMPARER{}}
104 AssertRepValidType_ ();
108 template <IIterableOfTo<T> ITERABLE_OF_ADDABLE, IInOrderComparer<KEY_TYPE> KEY_INORDER_COMPARER = less<KEY_TYPE>>
109 SortedKeyedCollection_stdset (KEY_INORDER_COMPARER&& keyComparer, ITERABLE_OF_ADDABLE&& src)
110 requires (IKeyedCollection_ExtractorCanBeDefaulted<T, KEY_TYPE, TRAITS>);
111 template <IInOrderComparer<KEY_TYPE> KEY_INORDER_COMPARER, IIterableOfTo<T> ITERABLE_OF_ADDABLE>
112 SortedKeyedCollection_stdset (
const KeyExtractorType& keyExtractor, KEY_INORDER_COMPARER&& keyComparer, ITERABLE_OF_ADDABLE&& src);
113 template <IInputIterator<T> ITERATOR_OF_ADDABLE, IInOrderComparer<KEY_TYPE> KEY_INORDER_COMPARER = less<KEY_TYPE>>
114 SortedKeyedCollection_stdset (ITERATOR_OF_ADDABLE&& start, ITERATOR_OF_ADDABLE&&
end)
115 requires (IKeyedCollection_ExtractorCanBeDefaulted<T, KEY_TYPE, TRAITS>);
116 template <IInputIterator<T> ITERATOR_OF_ADDABLE, IInOrderComparer<KEY_TYPE> KEY_INORDER_COMPARER = less<KEY_TYPE>>
117 SortedKeyedCollection_stdset (KEY_INORDER_COMPARER&& keyComparer, ITERATOR_OF_ADDABLE&& start, ITERATOR_OF_ADDABLE&&
end)
118 requires (IKeyedCollection_ExtractorCanBeDefaulted<T, KEY_TYPE, TRAITS>);
119 template <IInOrderComparer<KEY_TYPE> KEY_INORDER_COMPARER, IInputIterator<T> ITERATOR_OF_ADDABLE>
120 SortedKeyedCollection_stdset (
const KeyExtractorType& keyExtractor, KEY_INORDER_COMPARER&& keyComparer, ITERATOR_OF_ADDABLE&& start,
121 ITERATOR_OF_ADDABLE&&
end);
126 nonvirtual SortedKeyedCollection_stdset& operator= (SortedKeyedCollection_stdset&&) noexcept = default;
127 nonvirtual SortedKeyedCollection_stdset& operator= (const SortedKeyedCollection_stdset&) = default;
130 using IImplRepBase_ = typename SortedKeyedCollection<T, KEY_TYPE, TRAITS>::_IRep;
131 template <qCompilerAndStdLib_ConstraintDiffersInTemplateRedeclaration_BWA (IInOrderComparer<KEY_TYPE>) KEY_INORDER_COMPARER>
135 nonvirtual
void AssertRepValidType_ () const;