Boost logo

Boost :

Subject: Re: [boost] [iterator][range] Synchronization on 'master'
From: Edward Diener (eldiener_at_[hidden])
Date: 2015-10-16 15:40:14


On 10/16/2015 2:05 PM, Robert Ramey wrote:
> On 10/16/15 10:51 AM, Edward Diener wrote:
>> On 10/16/2015 11:10 AM, Robert Ramey wrote:
>>> On 10/15/15 9:50 PM, Edward Diener wrote:
>>>> I have pushed a number of changes to iterator from 'develop' to
>>>> 'master'
>>>> for the next release.
>>>>
>>>> A series of these changes on 'develop', by Marcel Raad, is an
>>>> attempt to
>>>> remove from 'iterator' the use of the deprecated headers
>>>> 'boost/iterator.hpp' and 'boost/detail/iterator.hpp' in favor of using
>>>> 'std::iterator' directly instead of 'boost::iterator' and
>>>> 'std::iterator_traits' and 'std::distance' directly instead of
>>>> 'boost::detail::iterator_traits' and 'boost::detail::distance'.
>>>> Essentially these changes mean that any other library using 'iterator'
>>>> classes would fail if they attempted to refer to 'boost::iterator',
>>>> 'boost::detail::iterator_traits', or 'boost::detail::distance'.
>>>
>>> The serialization library depends heavily on functionality only present
>>> in boost/iterator. This sounds like a recipe for surprises
>>
>> Only if serialization directly specifies 'boost::iterator',
>> 'boost::detail::iterator_traits', or 'boost::detail::distance'. If it
>> just uses the usual iterator templates the change would not affect it.
>
> So namespaces aren't changed at all? I notice I'm using things like
> boost::iterator_value, boost::iterator_core_access, ... etc. (off topic
> - In hindsight it seems a mistake to put them into the root namespace).
> I don't happen to use #include <boost/iterator.hpp> but isn't this a
> common idiom (convenience headers) in boost libraries? Are you sure you
> want to make a special case here?

First of all it's not really my change. Marcel Raad has pushed it based
on previous comments in boost/iterator.hpp and boost/detail/iterator.hpp
that these headers were deprecated.

Namespaces aren't changed at all. All the boost iterator stuff is still
boost::iterator_xxx etc.

The header boost/iterator.hpp is a convenience header but all it does is
put std::iterator in the boost namespace. Ditto for
boost/detail/iterator.hpp just putting std::iterator_traits and
std::distance into the boost::detail namespace.

I don't know the history of any of this. I am working with 'iterator' on
sufferance <g> because it doesn't look like any maintainer is paying the
slightest attention to it and it still remains a key Boost library which
needs some maintenance. If Marcel Raad, or some other expert, would like
to be the new official maintainer of 'iterator' I would be more than happy.


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