I have closely proof-read the HTML document and intend to respond with a new draft shortly.
There is one point I would like to raise for discussion:
> Inserting at the beginning or "close to the beginning" > of the circular_buffer is another trap. > > boost::circular_buffer<int> cb(5, 1); > cb.insert(cb.begin(), 2); // nothing will be inserted
By way of "the principle of least surprise" I think that insert should _always_ succeed. Inserting to the front should always overwrite the back, and vice versa. The concept of "old" and "new" serves only to confuse the issue IMHO - there is a front and back, (or left and right) but the circular buffer should not assume that the front-most are the oldest or newest. (The circular buffer can be _used_ as a FIFO, but does not _enforce_ FIFO, since it allows both push and pop from each end)
The following should be exactly equivalent: cb.insert(cb.begin(), 2); cb.push_front(2);
We may have discussed this already, I havn't checked the archives, but it appears to me as hazardous.
As a proposed semantic:
Insertion to the front or back will always be equivalent to a corresponding sequence of push_front or push_back.
What are the semantics of inserting a huge sequence to the middle of a circular buffer? What exactly gets kept?
Nigel
_______________________________________________ Unsubscribe & other changes: http://lists.boost.org/mailman/listinfo.cgi/boost