DIP 36: Rvalue References

Zach the Mystic reachzach at gggggmail.com
Sat Apr 20 21:27:33 PDT 2013


On Sunday, 21 April 2013 at 02:13:54 UTC, Manu wrote:
>>  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!
>
>
> definition:
>   matrix getMatrix(T x); // this is all you know
>
> That's the point of the example. You _don't know_ if func() is 
> unsafe, does
> it escape the reference? But you need to pass a temp anyway, 
> you have no
> bearing on whether you should just hack it to work, or 
> reconsider the
> problem.
> And when 99 times out of 100, the correct answer is 'hack it to 
> work',
> you're basically asking for a spectacular bug in that other 1% 
> of cases.

Yeah, that's kind of what I meant when I said it's a two-for-one 
deal. You get to pass temps, and you get safety checking too.


More information about the Digitalmars-d mailing list