Boost logo

Boost Users :

Subject: Re: [Boost-users] Boost.Ranges 2.0 algorithms accepting a const reference
From: Neil Groves (neil_at_[hidden])
Date: 2010-07-10 15:33:23

> This is in contrast with the "Introduction" section of the documentation
> which
> stresss that both versions of find have to be implemented due to the
> forwarding
> problem.
You are entirely correct. The reverse function is missing the const
overload, and this will cause a problem when returning a temporary to a
constant range that has mutable elements. A workaround, which I expect you
have already thought of, would be to hold a const reference to the range in
a variable and pass this into reverse.

I shall put a correction into the trunk as soon as possible. I shall also
review all of the algorithm functions for similar mistakes.

I apologize for my oversight and for any inconvenience this has caused.

> Moreover, iterator_range beheaves like stl iterators (and const_iterators,
> depending on the template argument used) and as such a const
> iterator_range<std::vector<double>::iterator> will behave like a mutable
> range
> (and the range_iterator class knows this).
> Please notice this is in contrast with the sub_range class (something I
> personally find a bit confusing :P).
This is deliberately in contrast. The iterator_range class wraps an iterator
to model a Range Concept. The sub_range wraps a Range, or Container while
preserving const-ness of the underlying Range.

Neil Groves

Boost-users list run by williamkempf at, kalb at, bjorn.karlsson at, gregod at, wekempf at