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