|
Boost : |
From: Alexander Belopolsky (belopols_at_[hidden])
Date: 2001-07-10 14:50:44
--- In boost_at_y..., "David Abrahams" <david.abrahams_at_r...> wrote:
> I'm afraid it's not the right approach. The value_type of a constant
> iterator to T should just be T, not const T. You need to arrange for
T
> const* and T const& pointer and reference parameters, respectively.
>
>
Thanks, Dave.
Here is an alternative fix:
> cvs diff iterator_adaptors.hpp
Index: iterator_adaptors.hpp
===================================================================
RCS file: /cvsroot/boost/boost/boost/iterator_adaptors.hpp,v
retrieving revision 1.42
diff -r1.42 iterator_adaptors.hpp
928a929
>
931c932,944
< inline typename indirect_iterator_generator<OuterIterator>::type
--- > struct indirect_iterator_selector { > typedef typename detail::iterator_traits<OuterIterator>::value_type OuterValue; > enum { inner_is_const = is_const<typename remove_pointer<OuterValue>::type>::value }; > typedef typename boost::detail::if_true<(inner_is_const)>::template > then< > indirect_iterator_pair_generator<OuterIterator>::const_iterator, > // else > indirect_iterator_pair_generator<OuterIterator>::iterator > >::type type; > }; > > template <class OuterIterator> > inline typename indirect_iterator_selector<OuterIterator>::type 934,935c947 < typedef typename indirect_iterator_generator < <OuterIterator>::type result_t; --- > typedef typename indirect_iterator_selector<OuterIterator>::type result_t; make_indirect_iterator is inside #ifndef BOOST_MSVC which probably means that it is not supposed to be portable to that platform to begin with.
Boost list run by bdawes at acm.org, gregod at cs.rpi.edu, cpdaniel at pacbell.net, john at johnmaddock.co.uk