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...

Reply via email to