Double-ended queue, similar to std::deque, but uses a fixed storage buffer. The buffer is managed externally and may be statically or dynamically allocated.
Deque is not movable. This avoids confusion about which buffer the deque is using, since the buffer is unowned. FixedDeque, which derives from Deque, optionally owns its buffer and supports moving.
To instantiate a Deque with an integrated buffer, see FixedDeque. FixedDeque supports either internal static or external static or dynamic allocation of its buffer.
All Deque constructors and operators are infallible. Other functions assert if operations cannot succeed.
| T | What is stored in the deque. |
| SizeType | How to store sizes. A smaller size type limits the maximum number of items, but requires slightly less memory. |
Public Member Functions | |
| constexpr | Deque (span< std::byte > unaligned_buffer) noexcept |
| template<size_t kAlignment, size_t kSizeBytes> | |
| constexpr | Deque (containers::Storage< kAlignment, kSizeBytes > &buffer) noexcept |
| Deque (const Deque &)=delete | |
| Copying is not supported since it can fail. | |
| Deque & | operator= (const Deque &)=delete |
| Deque (Deque &&)=delete | |
| Move is not supported to avoid confusion about deque/buffer pairings. | |
| Deque & | operator= (Deque &&)=delete |
| constexpr size_type | max_size () const noexcept |
Friends | |
| template<typename , typename > | |
| class | Queue |
| template<typename , size_t , typename > | |
| class | FixedDeque |