
On Thu, Nov 13, 2008 at 2:25 AM, David Abrahams <dave@boostpro.com> wrote:
on Wed Nov 12 2008, Thorsten Ottosen <thorsten.ottosen-AT-dezide.com> wrote:
David Abrahams skrev:
on Wed Nov 12 2008, Thorsten Ottosen <thorsten.ottosen-AT-dezide.com> wrote:
Do you mean that I can detect the return type of operator[] at compile-time and do correct forwarding?
No, I mean you can detect when the return type of operator[] is the same as the reference type. Maybe if it isn't, you could turn off whatever you're doing with enable_if or something. Why is iterator_range using the iterator's operator[], anyway?
It seems very natural to be able to index a random access range, doesn't it.
No comment.
And how else would you implement that?
The exact same way we implement it in iterator_facade.
http://www.boost.org/doc/libs/1_37_0/libs/iterator/doc/iterator_facade.html#...
I have the same issue in RangeEx. I would like to implement your suggestion. Your code looks so fit for purpose that perhaps we should take operator_brackets_proxy et al. out of the detail namespace and make it common to iterator_facade and to iterator_range? I'm concerned I might be being a little slow and that you are suggesting the use of already available public boost APIs.
Anyway, I guess I could do that check. Is it illegal for the iterators reference type to be a non-reference?
No, but in C++03 that makes them input iterators or output iterators, but not forward iterators.
I would appreciate a further guidance. Thank you in anticipation for your patience. Neil Groves