oversight with input ranges
ketmar via Digitalmars-d
digitalmars-d at puremagic.com
Tue Apr 21 16:31:56 PDT 2015
On Tue, 21 Apr 2015 18:57:50 -0400, Steven Schveighoffer wrote:
> On 4/21/15 3:53 PM, ketmar wrote:
>> here's the interesting oversight for isInputRange:
>> https://issues.dlang.org/show_bug.cgi?id=14478
>>
>> so be careful: ranges with non-copyable elements aren't input ranges
>> for now. ;-)
>
> This does seem like an incorrect limitation, and I'm not sure if it was
> intentional. However, there is a lot of code out there that expects this
> to work when isInputRange is true. I don't know if we should change it,
> as the range definition is pretty clear in the documentation that auto h
> = r.front is a required feature for ranges. What is the use case for
> this?
one possible use case was shown in bugreport. array of non-copyable
struct, yet i still want chain 'em, for example. or filter. or...
struct S {
int n;
@disable this (this);
}
void main () {
S[2] arr;
arr[0].n = 1;
arr[1].n = 2;
foreach (ref el; arr[].filter!((ref a) => a.n > 1)) {
writeln(el.n);
}
}
this code is perfectly valid, it doesn't require copying at all, yet it
is invalid now.
-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 181 bytes
Desc: not available
URL: <http://lists.puremagic.com/pipermail/digitalmars-d/attachments/20150421/8bbd9010/attachment.sig>
More information about the Digitalmars-d
mailing list