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