Jan,

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

Reply via email to