Infinite BidirectionalRange?

Ali Çehreli acehreli at yahoo.com
Fri Dec 24 14:19:00 PST 2010


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


More information about the Digitalmars-d mailing list