Hi,
Is there any specific reason why std::deque's pop_front & pop_back
does not return the removed object?
It could return the removed object by value (possibly atomically?)
Cheers.
The SGI's docs contain the reasoning - it's from queue's documentation
but it also applies for deque:
"One might wonder why pop() returns void, instead of value_type. That
is, why must one use front() and pop() to examine and remove the
element at the front of the queue, instead of combining the two in a
single member function? In fact, there is a good reason for this
design. If pop() returned the front element, it would have to return
by value rather than by reference: return by reference would create a
dangling pointer. Return by value, however, is inefficient: it
involves at least one redundant copy constructor call. Since it is
impossible for pop() to return a value in such a way as to be both
efficient and correct, it is more sensible for it to return no value
at all and to require clients to use front() to inspect the value at
the front of the queue."