rvalue references
Namespace via Digitalmars-d
digitalmars-d at puremagic.com
Wed Jun 3 00:09:06 PDT 2015
On Wednesday, 3 June 2015 at 03:57:38 UTC, bitwise wrote:
> I forgot to mention, in terms of this statement I made:
>
>> I can't remember right now what the reasoning was for 'const
>> ref' not to take
>> rvalues in the first place. I think it was that you could
>> escape the reference,
>> but this isn't true anymore with DIP25 right?
>
> I think someone brought this up about a weeks ago,
That was me.
> and this was Andrei's response:
>
>> Knee-jerk response: if no "return" attribute on a function it
>> should be safeto bind rvalues to ref parameters. Of course
>> that's impractical as a default
>> so explicit "auto ref" would be needed. -- Andrei
>
> What's impractical?
It's dangerous. If rvalues could be passed to normal ref
parameter we would have a problem. Consider this:
----
struct Sprite {
private Texture* _tex;
this(ref Texture tex) {
_tex = &tex;
}
}
----
This works because we accept a valid lvalue and store a pointer
to it. If the CTor would accept also rvalues, then the pointer
would be invalid, since the texture was just a temporary
variable. Not the best example, but I think you understand what I
mean.
More information about the Digitalmars-d
mailing list