#pragma once #include #include #include namespace AK { template class CircularDeque : public CircularQueue { public: T dequeue_end() { ASSERT(!this->is_empty()); auto& slot = this->elements()[(this->m_head + this->m_size - 1) % Capacity]; T value = move(slot); slot.~T(); this->m_size--; return value; } }; } using AK::CircularDeque;