4#ifndef _Stroika_Foundation_Containers_Deque_h_
5#define _Stroika_Foundation_Containers_Deque_h_ 1
7#include "Stroika/Foundation/StroikaPreComp.h"
20 using Traversal::IInputIterator;
21 using Traversal::IIterableOfTo;
22 using Traversal::Iterable;
23 using Traversal::Iterator;
82 template <IIterableOfTo<T> ITERABLE_OF_ADDABLE>
83 explicit
Deque (ITERABLE_OF_ADDABLE&& src)
84 requires (not derived_from<remove_cvref_t<ITERABLE_OF_ADDABLE>,
Deque<T>>)
85#if qCompilerAndStdLib_RequiresNotMatchInlineOutOfLineForTemplateClassBeingDefined_Buggy
89 _AssertRepValidType ();
93 template <IInputIterator<T> ITERATOR_OF_ADDABLE>
94 Deque (ITERATOR_OF_ADDABLE&& start, ITERATOR_OF_ADDABLE&&
end);
99 explicit Deque (shared_ptr<_IRep>&& src)
noexcept;
100 explicit Deque (
const shared_ptr<_IRep>& src)
noexcept;
105 nonvirtual
Deque& operator= (
Deque&&) noexcept = default;
106 nonvirtual
Deque& operator= (const
Deque&) = default;
142 nonvirtual T
back () const;
147 template <typename T2>
148 using _SafeReadRepAccessor = typename inherited::template _SafeReadRepAccessor<T2>;
153 template <typename T2>
154 using _SafeReadWriteRepAccessor = typename inherited::template _SafeReadWriteRepAccessor<T2>;
157 nonvirtual
void _AssertRepValidType () const;
166 template <typename T>
172 virtual void AddHead (ArgByValueType<value_type> item) = 0;
Implementation detail for Deque<T> implementors.
typename inherited::value_type value_type
nonvirtual T back() const
nonvirtual value_type RemoveTail()
nonvirtual void AddHead(ArgByValueType< value_type > item)
nonvirtual void push_front(ArgByValueType< value_type > item)
Implementation detail for Queue<T> implementors.
A Queue is a first-in-first-out (FIFO) data structure, where elements are arranged in well-ordered fa...
nonvirtual void AddAllToTail(ITERABLE_OF_ADDABLE &&s)
typename inherited::value_type value_type
static constexpr default_sentinel_t end() noexcept
Support for ranged for, and STL syntax in general.
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.