On Sunday, 5 July 2015 at 00:18:18 UTC, Tanel Tagaväli wrote:
On Saturday, 4 July 2015 at 16:29:44 UTC, Marc Schütz wrote:
Try std.range.transposed:
http://dlang.org/phobos/std_range.html#.transposed
Does this work with user-defined types?
I defined two structs that implement the InputRange(possibly
ForwardRange) interface, an integer range and a range of those
integer ranges.
DMD tells me the "transposed" template cannot deduce function
from the arguments, which is a range of integer ranges.
The template does, however, work on a two-dimensional array.
The "save" method is implemented using a simple "return this",
could this be to blame?
This should be fine. Which of the ranges is the ForwardRange? It
should be the range-of-ranges.
You can check which of the template constraints fails:
import std.range;
alias RangeOfRanges = typeof(myRangeOfRanges);
pragma(msg, isForwardRange!RangeOfRanges);
pragma(msg, isInputRange!(ElementType!RangeOfRanges));
pragma(msg, hasAssignableElements!RangeOfRanges);
Maybe it's the last condition, `hasAssignableElements`. I don't
know whether that one is really necessary...