Create a QueueImpl with specified initial capacity.
Removes all items from the queue.
Removes an item from the back of the queue.
Removes an item from the front of the queue.
Adds an item on the back of the queue.
Adds an item on the front of the queue.
Doesn't call struct destructors, don't scan memory. You should probably only put POD types in them.
Doubly-indexed queue, can be used as a FIFO or stack.