From: Thorsten Ottosen (thorsten.ottosen_at_[hidden])
Date: 2006-05-08 17:35:18
Eric Niebler wrote:
> David Abrahams wrote:
>>> Your patch gets everything all mixed up.
>> That's rather a bald and sweeping statement to make without any
>> explanation. What do you really mean by "everything" in this case?
> Everything, in this case, means the separate and orthogonal
responsibilities of the three range metafunctions.
> This is a potentially breaking change. Consider a range adaptor...
> template<typename Range> struct some_adaptor
> typedef typename range_iterator<Range>::type iterator;
> typedef typename range_const_iterator<Range>::type const_iterator;
> In this case, you really don't care about the const-ness of Range --
you just want the nested ::iterator type. And anyplace someone is using
these metafunctions to perform type computations where const-ness
doesn't matter will now be broken.
In the new version, this is how range_iterator is defined:
template< typename C >
mpl::if_< BOOST_DEDUCED_TYPENAME is_const<C>::type,
} // namespace boost
Boost list run by bdawes at acm.org, gregod at cs.rpi.edu, cpdaniel at pacbell.net, john at johnmaddock.co.uk