refRange with non copyable struct

Jerry via Digitalmars-d-learn digitalmars-d-learn at puremagic.com
Mon Apr 17 11:45:46 PDT 2017


On Monday, 17 April 2017 at 18:07:36 UTC, Jonathan M Davis wrote:
> In this particular case, it looks like the main problem is 
> RefRange's opAssign. For it to work, the type needs to be 
> copyable. It might be reasonable for RefRange to be enhanced so 
> that it doesn't compile in opAssign if the range isn't 
> copyable, but I'd have to study RefRange in depth to know what 
> the exact consequences of that would be, since it's been quite 
> a while since I did anything with it. My guess is that such a 
> change would be reasonable, but I don't know without studying 
> it.
>
> - Jonathan M Davis

I took a look on RefRange and the reasoning is clearly explained 
in the docs like this:

This does not assign the pointer of $(D rhs) to this $(D 
RefRange).
Rather it assigns the range pointed to by $(D rhs) to the range 
pointed
to by this $(D RefRange). This is because $(I any) operation on a
RefRange) is the same is if it occurred to the original range. The
exception is when a $(D RefRange) is assigned $(D null) either
or because $(D rhs) is $(D null). In that case, $(D RefRange)
longer refers to the original range but is $(D null).



But what I do not understand is why this is important.


More information about the Digitalmars-d-learn mailing list