18namespace pw::containers::internal {
24template <
typename Derived,
typename Deque>
27 using const_iterator =
typename Deque::const_iterator;
28 using const_pointer =
typename Deque::const_pointer;
29 using const_reference =
typename Deque::const_reference;
30 using difference_type =
typename Deque::difference_type;
31 using iterator =
typename Deque::iterator;
32 using pointer =
typename Deque::pointer;
33 using reference =
typename Deque::reference;
34 using size_type =
typename Deque::size_type;
35 using value_type =
typename Deque::value_type;
39 reference front() {
return deque().front(); }
40 const_reference front()
const {
return deque().front(); }
42 reference back() {
return deque().back(); }
43 const_reference back()
const {
return deque().back(); }
46 [[nodiscard]]
bool empty()
const noexcept {
return deque().empty(); }
48 [[nodiscard]]
constexpr bool full()
const noexcept {
return deque().full(); }
50 size_type size()
const noexcept {
return deque().
size(); }
52 size_type max_size()
const noexcept {
return deque().max_size(); }
54 size_type capacity()
const noexcept {
return deque().
capacity(); }
59 void clear() { deque().clear(); }
61 void push(
const value_type& value) { deque().push_back(value); }
63 void push(value_type&& value) { deque().push_back(std::move(value)); }
65 template <
typename... Args>
66 void emplace(Args&&... args) {
67 deque().emplace_back(std::forward<Args>(args)...);
70 void pop() { deque().pop_front(); }
73 constexpr GenericQueue() noexcept = default;
76 ~GenericQueue() = default;
78 constexpr Deque& deque() {
return static_cast<Derived&
>(*this).deque(); }
79 constexpr const Deque& deque()
const {
80 return static_cast<const Derived&
>(*this).deque();
constexpr size_type size() const noexcept
Returns the number of elements in the deque.
Definition: generic_deque.h:69
constexpr size_type capacity() const noexcept
Returns the maximum number of elements in the deque.
Definition: generic_deque.h:74
Definition: generic_queue.h:25
void clear()
Removes all elements from the queue.
Definition: generic_queue.h:59