Showing with 22 additions and 0 deletions.
  1. +22 −0 std/range/package.d
22 changes: 22 additions & 0 deletions std/range/package.d
Original file line number Diff line number Diff line change
Expand Up @@ -5902,6 +5902,16 @@ struct FrontTransversal(Ror,
_input[n].front = val;
}
}
/// Ditto
static if (hasLength!RangeOfRanges)
{
@property size_t length()
{
return _input.length;
}

alias opDollar = length;
}

/**
Slicing if offered if $(D RangeOfRanges) supports slicing and all the
Expand Down Expand Up @@ -6009,6 +6019,18 @@ FrontTransversal!(RangeOfRanges, opt) frontTransversal(
}
}

// Issue 16363
@safe unittest
{
import std.algorithm.comparison : equal;

int[][] darr = [[0, 1], [4, 5]];
auto ft = frontTransversal!(TransverseOptions.assumeNotJagged)(darr);

assert(equal(ft, [0, 4]));
static assert(isRandomAccessRange!(typeof(ft)));
}

/**
Given a range of ranges, iterate transversally through the
`n`th element of each of the enclosed ranges.
Expand Down