https://issues.dlang.org/show_bug.cgi?id=16363
Issue ID: 16363
Summary: Cannot construct a random access range using
frontTransversal
Product: D
Version: D2
Hardware: All
OS: All
Status: NEW
Severity: enhancement
Priority: P1
Component: phobos
Assignee: [email protected]
Reporter: [email protected]
The current implementation of FrontTransversal and Transversal both do not
attempt to implement length or opDollar when the underlying range supports it,
thus even when using assumeNotJagged the output range will not be a random
access range.
import std.range;
void main() {
int[][] darr = [[0, 1, 2], [4, 5, 6]];
auto fT = frontTransversal!(TransverseOptions.assumeNotJagged)(darr);
auto l = fT.length;
auto s = fT[0 .. $];
static assert(isRandomAccessRange!(typeof(fT)));
}
alex.d(5): Error: no property 'length' for type 'FrontTransversal!(int[][],
cast(TransverseOptions)2)'
alex.d(6): Error: undefined identifier '__dollar'
alex.d(7): Error: static assert
(isRandomAccessRange!(FrontTransversal!(int[][], cast(TransverseOptions)2))) is
false
--