From: Vladimir Prus (ghost_at_[hidden])
Date: 2004-04-27 01:20:00
David Abrahams wrote:
> Vladimir Prus <ghost_at_[hidden]> writes:
>>>> but it that I'm not sure what operator++(int) should return...
>> That's the important question. Writable non-lvalue iterator cannot return
>> a proxy storing the value inside, since there's no value to store. So
>> making iterator_facade return proxy with stored value for all non-lvalue
>> iterators is too simple solution :-(
> Actually I think a proxy storing the iterator_facade's "reference"
> type is probably enough. Think about it.
For writable iterators, that's fine (well, provided it's required that
return type of *a is iterator_traits<X>::reference).
For readable iterators, you have to store value_type, not reference, since
if you store reference, *r++ won't work.
The question is how to distinguish between readable and writable iterators.
Maybe, using 'is_convertible' on the reference type?
BTW, are there any examples of writable iterator made with iterator facade?
Boost list run by bdawes at acm.org, gregod at cs.rpi.edu, cpdaniel at pacbell.net, john at johnmaddock.co.uk