|
Boost Users : |
From: Markus Werle (numerical.simulation_at_[hidden])
Date: 2006-11-18 15:42:42
David Abrahams wrote:
>> So I can use std::random_access_iterator_tag instead?
>
> Not with your iterator definition; you'd be lying to the standard
> library. A standard random access iterator has a reference type of
> value_type&. Without that, your iterator is just an input iterator
> from the STL point-of-view.
Does that mean that I cannot create a standard conforming
random access iterator for a class that behaves as a read-only
proxy for values calculated on-the-fly when requested?
>> I simply want an iterator that works with current STL as random
>> iterator.
>
> Then use a real reference type. Sorry, the STL iterator design took a
> limited worldview and you have to conform to it if you want to get all
> the expected optimizations.
So the best way is to define
distance(MyIterator, MyIterator);
lower_bound...
etc.
in namespace std?
>> Class Demo uses a std::size_t as index type.
>> How do I build my iterator with iterator_facade?
>
> Use a signed distance type; that's a requirement of STL
I kind of fixed it by overloading operator- in order to avoid
-distance_to. Now it "works". Is this dangerous?
> (and new-style) iterators.
So using std::size_t as index argument type is a bad idea
if I want to plug iterators? I mean: AFAIK it is not guaranteed
that I have a signed type that can hold std::size_t.
Correct me if I am wrong, please.
Markus
Boost-users list run by williamkempf at hotmail.com, kalb at libertysoft.com, bjorn.karlsson at readsoft.com, gregod at cs.rpi.edu, wekempf at cox.net