Boost logo

Boost :

From: Thorsten Ottosen (thorsten.ottosen_at_[hidden])
Date: 2006-10-04 12:19:17


David Abrahams wrote:
> Thorsten Ottosen <thorsten.ottosen_at_[hidden]> writes:
>
>
>>Shunsuke Sogame wrote:
>>
>>>Hi gurus, under RC_1_34,
>>>
>>> #include <boost/range.hpp>
>>> #include <boost/iterator/counting_iterator.hpp>
>>>
>>> int main()
>>> {
>>> boost::make_iterator_range(
>>> boost::make_counting_iterator(0),
>>> boost::make_counting_iterator(5)
>>> )[2];
>>> }
>>>
>>>
>>>VC++7.1 and GCC3.4 says a warning something like
>>>"returning address of local variable or temporary".
>>
>>I think counting_iterator is not a valid random access iterator because
>>operator[]() does not yield a reference.
>
>
> That is not a requirement of random access iterator.

Reading the working draft from n2009, table 93 states that

   a[n] should be convertible to const T&.

>>Counting iterator should define its reference-type to be the type it
>>returns from operator[]() (even though it is not a reference). Then I
>>think it would work.
>>
>>Do the authors of the iterator lib agree?
>
>
> No. There are good reasons that it works the way it does.

So there is no way to infer the the type of oprerator[]()
until we get decltype?

-Thorsten


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