isRandomAccessRange at

  http://digitalmars.com/d/2.0/phobos/std_range.html#isRandomAccessRange

describes what a RandomAccessRange is:

<quote>

A random-access range is a bidirectional range that also offers the primitive opIndex, OR an infinite forward range that offers opIndex. In either case, the range must either offer length or be infinite. The following code should compile for any random-access range.

R r;
static assert(isForwardRange!(R)); // range is forward
static assert(isBidirectionalRange!(R) || isInfinite!(R));
                                  // range is bidirectional or infinite
auto e = r[1];                    // can index

</quote>

The part that starts with "In either case" does not make sense to me (and the sample code does not cover all possible cases). It seems to suggest that a RandomAccessRange may be an infinite BidirectionalRange.

Since a BidirectionalRange defines both front() and back(), its being infinite can only come from asymptoting at one or more points in between the two ends. Is that useful?

Does the document need correction or my understanding? :)

Ali

Reply via email to