
David Abrahams wrote:
Thorsten Ottosen <thorsten.ottosen@dezide.com> 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