172 requires (IEqualsComparer<equal_to<T>, T>);
173 template <IEqualsComparer<T> EQUALS_COMPARER>
174 explicit Set (EQUALS_COMPARER&& equalsComparer);
175 Set (
Set&&) noexcept = default;
176 Set (const
Set&) noexcept = default;
178 requires (IEqualsComparer<equal_to<T>, T>);
179 template <IEqualsComparer<T> EQUALS_COMPARER>
180 Set (EQUALS_COMPARER&& equalsComparer, const initializer_list<
value_type>& src);
181 template <IIterableOfTo<T> ITERABLE_OF_ADDABLE>
182 requires (not derived_from<remove_cvref_t<ITERABLE_OF_ADDABLE>,
Set<T>>)
183 explicit
Set (ITERABLE_OF_ADDABLE&& src)
184#if qCompilerAndStdLib_RequiresNotMatchInlineOutOfLineForTemplateClassBeingDefined_Buggy
187 AddAll (forward<ITERABLE_OF_ADDABLE> (src));
188 _AssertRepValidType ();
192 template <IEqualsComparer<T> EQUALS_COMPARER, IIterableOfTo<T> ITERABLE_OF_ADDABLE>
193 Set (EQUALS_COMPARER&& equalsComparer, ITERABLE_OF_ADDABLE&& src);
194 template <IInputIterator<T> ITERATOR_OF_ADDABLE, sentinel_for<remove_cvref_t<ITERATOR_OF_ADDABLE>> ITERATOR_OF_ADDABLE2>
195 Set (ITERATOR_OF_ADDABLE&& start, ITERATOR_OF_ADDABLE2&& end)
196 requires (IEqualsComparer<equal_to<T>, T>);
197 template <IEqualsComparer<T> EQUALS_COMPARER, IInputIterator<T> ITERATOR_OF_ADDABLE, sentinel_for<remove_cvref_t<ITERATOR_OF_ADDABLE>> ITERATOR_OF_ADDABLE2>
198 Set (EQUALS_COMPARER&& equalsComparer, ITERATOR_OF_ADDABLE&& start, ITERATOR_OF_ADDABLE2&& end);
201 explicit Set (shared_ptr<_IRep>&& rep)
noexcept;
202 explicit Set (
const shared_ptr<_IRep>& rep)
noexcept;
207 nonvirtual Set& operator= (Set&&) noexcept = default;
208 nonvirtual Set& operator= (const Set&) = default;
216 nonvirtual ElementEqualityComparerType GetElementEqualsComparer () const;
221 nonvirtual
bool Contains (ArgByValueType<value_type> item) const;
227 nonvirtual
bool contains (ArgByValueType<value_type> item) const;
233 nonvirtual
bool ContainsAll (const Iterable<value_type>& items) const;
239 nonvirtual
bool ContainsAny (const Iterable<value_type>& items) const;
246 nonvirtual
bool IsSubsetOf (const Set& superset) const;
253 nonvirtual optional<value_type> Lookup (ArgByValueType<value_type> item) const;
271 nonvirtual
void Add (ArgByValueType<value_type> item);
288 nonvirtual
bool AddIf (ArgByValueType<value_type> item);
296 template <IInputIterator<T> ITERATOR_OF_ADDABLE, sentinel_for<remove_cvref_t<ITERATOR_OF_ADDABLE>> ITERATOR_OF_ADDABLE2>
297 nonvirtual
void AddAll (ITERATOR_OF_ADDABLE&& start, ITERATOR_OF_ADDABLE2&& end);
298 template <IIterableOfTo<T> ITERABLE_OF_ADDABLE>
299 nonvirtual
void AddAll (ITERABLE_OF_ADDABLE&& items);
313 nonvirtual
void Remove (ArgByValueType<
value_type> item);
336 nonvirtual
bool RemoveIf (ArgByValueType<
value_type> item);
348 template <IInputIterator<T> ITERATOR_OF_ADDABLE>
349 nonvirtual
size_t RemoveAll (ITERATOR_OF_ADDABLE&& start, ITERATOR_OF_ADDABLE&& end);
350 template <IIterableOfTo<T> ITERABLE_OF_ADDABLE>
351 nonvirtual
size_t RemoveAll (const ITERABLE_OF_ADDABLE& s);
352 nonvirtual
void RemoveAll ();
353 template <predicate<T> PREDICATE>
354 nonvirtual
size_t RemoveAll (PREDICATE&& p);
360 template <typename RESULT_CONTAINER =
Set<T>, invocable<T> ELEMENT_MAPPER>
361 nonvirtual RESULT_CONTAINER Map (ELEMENT_MAPPER&& elementMapper) const
362 requires (convertible_to<invoke_result_t<ELEMENT_MAPPER, T>, typename RESULT_CONTAINER::
value_type> or
363 convertible_to<invoke_result_t<ELEMENT_MAPPER, T>, optional<typename RESULT_CONTAINER::
value_type>>);
381 template <derived_from<
Iterable<T>> RESULT_CONTAINER =
Set<T>, predicate<T> INCLUDE_PREDICATE>
382 nonvirtual RESULT_CONTAINER Where (INCLUDE_PREDICATE&& includeIfTrue) const;
396 nonvirtual
bool operator== (const
Set& rhs) const;
408 static
bool Intersects (const
Set& lhs, const
Set& rhs);
416 static
Set Intersection (const
Set& lhs, const
Set& rhs);
425 static
Set Union (const
Set& lhs, const
Set& rhs);
430 nonvirtual
Set Difference (const
Set& rhs) const;
432 nonvirtual
Set Difference (ArgByValueType<
value_type> rhs) const;
442 nonvirtual
Set& operator+= (ArgByValueType<
value_type> item);
453 nonvirtual
Set& operator-= (ArgByValueType<
value_type> item);
470 nonvirtual
void clear ();
492 template <class InputIt>
493 nonvirtual
void insert (InputIt first, InputIt last);
494 nonvirtual
void insert (initializer_list<T> ilist);
502 nonvirtual
void erase (ArgByValueType<
value_type> item);
509 nonvirtual
Set CloneEmpty () const;
529 template <typename T2>
530 using _SafeReadRepAccessor = typename
inherited::template _SafeReadRepAccessor<T2>;
535 template <typename T2>
536 using _SafeReadWriteRepAccessor = typename
inherited::template _SafeReadWriteRepAccessor<T2>;
539 nonvirtual
void _AssertRepValidType () const;