Boost logo

Boost :

From: Damien Fisher (damien_at_[hidden])
Date: 2002-06-12 22:58:10


On Wed, 12 Jun 2002, David Abrahams wrote:

> > I think this is a good argument in favor of dyn_bitset, and for providing
> > iterators. I haven't looked at it closely, but can we provide an iterator
> > for dyn_bitset that meets all the requirements for STL iterators?
>
> Actually you can. There are two ways:
>
> 1. the iterator is an input iterator but not a forward iterator
> 2. The iterator is a random access iterator that internally stores a copy
> of the bool lvalue you would get by dereferencing it.

How would this work? (I don't know what the semantics are for
dyn_bitset, but I think this code is understandable)

dyn_bitset bs(6); // create bitset of size 6

bs[5] = 0; // set 6th bit to 0
dyn_bitset::iterator itr1 = bs[5];
dyn_bitset::iterator itr2 = bs[5];

*itr1 = 1; // saves 1 in the iterator
*itr2 = 0; // saves 0 in the iterator

// itr2 destroyed -- writes 0 to the bitset
// itr1 destroyed -- writes 1 to the bitset

If the iterator writes the values back upon destruction, then the value
of bs[5] here will be 1, not 0. This strikes me as really
weird...surely this isn't standards conforming???


Boost list run by bdawes at acm.org, gregod at cs.rpi.edu, cpdaniel at pacbell.net, john at johnmaddock.co.uk