126 template <IIterableOfTo<T> ITERABLE_OF_ADDABLE>
127 requires (not derived_from<remove_cvref_t<ITERABLE_OF_ADDABLE>,
Queue<T>>)
128 explicit
Queue (ITERABLE_OF_ADDABLE&& src)
129#if qCompilerAndStdLib_RequiresNotMatchInlineOutOfLineForTemplateClassBeingDefined_Buggy
132 AddAllToTail (forward<ITERABLE_OF_ADDABLE> (src));
133 _AssertRepValidType ();
137 template <IInputIterator<T> ITERATOR_OF_ADDABLE>
138 Queue (ITERATOR_OF_ADDABLE&& start, ITERATOR_OF_ADDABLE&& end);
141 explicit Queue (shared_ptr<_IRep>&& rep)
noexcept;
142 explicit Queue (
const shared_ptr<_IRep>& rep)
noexcept;
147 nonvirtual Queue& operator= (Queue&&) noexcept = default;
148 nonvirtual Queue& operator= (const Queue&) = default;
158 nonvirtual
void AddTail (ArgByValueType<value_type> item);
164 nonvirtual
void push_back (ArgByValueType<value_type> item);
171 nonvirtual value_type Head () const;
178 nonvirtual T front () const;
183 nonvirtual optional<value_type> HeadIf () const;
190 nonvirtual value_type RemoveHead ();
197 nonvirtual value_type pop_back ();
203 nonvirtual optional<value_type> RemoveHeadIf ();
213 nonvirtual
void Enqueue (ArgByValueType<value_type> item);
222 nonvirtual value_type Dequeue ();
237 template <IIterableOfTo<T> ITERABLE_OF_ADDABLE>
238 nonvirtual
void AddAllToTail (ITERABLE_OF_ADDABLE&& s);
239 template <IInputIterator<T> ITERATOR_OF_ADDABLE>
240 nonvirtual
void AddAllToTail (ITERATOR_OF_ADDABLE&& start, ITERATOR_OF_ADDABLE&& end);
246 nonvirtual
void RemoveAll ();
254 nonvirtual
void clear ();
260 template <typename T_EQUALS_COMPARER = equal_to<T>>
266 template <typename ELEMENT_COMPARER = compare_three_way>
273 nonvirtual
bool operator== (const
Queue& rhs) const
274 requires (equality_comparable<T>);
280 nonvirtual auto operator<=> (const
Queue& rhs) const
281 requires (three_way_comparable<T>);
286 template <typename T2>
287 using _SafeReadRepAccessor = typename
inherited::template _SafeReadRepAccessor<T2>;
292 template <typename T2>
293 using _SafeReadWriteRepAccessor = typename
inherited::template _SafeReadWriteRepAccessor<T2>;
296 nonvirtual
void _AssertRepValidType () const noexcept;
conditional_t<(sizeof(CHECK_T)<=2 *sizeof(void *)) and is_trivially_copyable_v< CHECK_T >, CHECK_T, const CHECK_T & > ArgByValueType
This is an alias for 'T' - but how we want to pass it on stack as formal parameter.