DIP 36: Rvalue References

Zach the Mystic reachzach at gggggmail.com
Sat Apr 20 18:36:41 PDT 2013


On Sunday, 21 April 2013 at 00:51:31 UTC, Manu wrote:
> That's not what scope does. Scope promises that the variables 
> will not
> escape the scope. And as such, just happens to make passing a 
> temporary by
> ref safe.
> It does not implement r-value ref's. It simply allows refs to 
> temporaries
> to be considered a safe operation.

It's a two-fer! (2 for 1 deal)

> This DIP is actually likely to solve an important source of 
> problems,
> consider:
>
> void func(const ref matrix m);
>
>
> func(x.getMatrix()); // compile error!
>
> // fu*^&%$ing hell! you piece of &%^#≈¿$!
> // ...
>
> matrix temp = x.getMatrix();
> func(temp); // no more compile error! (but equally 
> unsafe/dangerous)

It's hard to fully understand this example without getMatrix() 
defined, and why func() is unsafe (does it escape the 
reference?). Help!

> <Side rant>
> In my experience showing D to new people, this is the #1 
> complaint. It's
> the first one that comes up, every time (which really doesn't 
> help with
> first impressions), and I'm fairly sure every single person 
> I've introduced
> to D has complained about this.
> It's kind of embarrassing when I'm saying that D is really 
> cool, and then I
> have to start making excuses and apologising for this, and 
> assure them that
> it's a known issue, and it'll be fixed one day.

Yikes.


More information about the Digitalmars-d mailing list