Must ranges support `r1 = r2;`?
Jack Stouffer
jack at jackstouffer.com
Mon Apr 16 15:58:34 UTC 2018
On Saturday, 24 March 2018 at 21:44:35 UTC, ag0aep6g wrote:
> Long version: <https://issues.dlang.org/show_bug.cgi?id=18657>
> ("std.range and std.algorithm can't handle refRange").
>
> Short version: With two `std.range.RefRange`s, `r1 = r2;` does
> not what other Phobos code expects.
>
> Question is: Who's at fault? Where do I fix this? Do ranges
> have to support assignment as expected - even though std.range
> doesn't mention it? Or should range-handling code never do that
> - even though it comes naturally and is widespread currently?
Posting this from the PR.
This is a band-aid over the issue of what to do with funky
operator overloads in ranges. In conjunction with this issue, you
also have to assume that one could do stuff in the ctor that
would mess up existing range code in Phobos. What really needs to
happen is the range spec needs to be updated with a clear list of
assumptions that Phobos makes in regards to these functions. I'm
pretty sure that RefRange would have been designed differently if
the designer realized the results of overloading opAssign like
that.
In a perfect world, we'd have a pre-constructed test suite that
people could plug their range (with some data in it) into, where
all the tests make sure all Phobos assumptions hold true.
In my opinion, it would be best to update the range spec and go
from there.
More information about the Digitalmars-d
mailing list