More tricky range semantics
Tobias Pankrath via Digitalmars-d
digitalmars-d at puremagic.com
Fri Jan 16 10:34:08 PST 2015
On Friday, 16 January 2015 at 18:12:03 UTC, Joseph Rushton
Wakeling wrote:
> On Friday, 16 January 2015 at 17:22:42 UTC, Tobias Pankrath
> wrote:
>> Ah, now I understand you. Since copy-construction is undefined
>> for ForwardRanges, you cannot guarantee this. Things would be
>> better, if we had required that this(this) does the same as
>> .save or must be @disabled.
>
> I'm not sure I follow what you mean by this ... ?
If you pass a forward range of type T (something that passes
isForwardRange!T) to a function you have no guarantees on what
will happen. It could be:
• compilation failure
• reference semantics (changes are reflected outside the
function
• value semantics (no change are reflected outside the
function)
The implementer of the range can choose one. Although I tried it
now, and @disable this(this) does prevent isForwardRange!T to
pass. I don't know if that changed recently or is just out of
line with the documentation/specification.
More information about the Digitalmars-d
mailing list