import std.range; import std.stdio : writeln; void main( ) { ulong[1] t0; auto t1 = t0[].chunks(1).transposed; writeln(t1); } The above code spews out a never-ending string of [0]s. Add a very simple .array before .transposed, and things work perfectly.
https://github.com/D-Programming-Language/phobos/pull/1138 Note that calling .array will be made mandatory, because Chunks does not have assignable subranges, so there's no way transpose can possibly work for it (popping of subranges does not have lasting effect on the parent container).
Commit pushed to master at https://github.com/D-Programming-Language/phobos https://github.com/D-Programming-Language/phobos/commit/4113afc85a30b0413ee710cfd9300ca945908836 Fix issue 8764 Transposed can only work with ranges of ranges if the subranges are assignable. Add signature constraints. Fix forward range bugs (should use .save instead of just copying the range object). Add unittests.