[dmd-beta] rvalue references

Dmitry Olshansky dmitry.olsh at gmail.com
Fri Apr 13 00:36:28 PDT 2012


On 13.04.2012 2:21, Andrei Alexandrescu wrote:
> On 4/12/12 5:16 PM, Dmitry Olshansky wrote:
>> void swap(T)(T lhs, T rhs){
>> static assert(false, "swap of rvalues has no effect");
>> }
>>
>> void swap(T)(ref T lhs, ref T rhs);
>> {
>> ... //same trustworthy swap
>> }
>
> I'm not sure how well this scales. We're adding as much boilerplate as 
> functionality here.
>

To clarify my stance on this somewhat - I believe it just shows 2 things:
a) Sealed conatiners with rvalue returns are rapidly becoming extinct 
beasts with this new ref-binds-rvalues rule. It arguably might be viewed 
as an antipattern like declaring C++ operator[] returning non-ref where 
you obviously didn't meant it.
b) Apparently the whole trend of "I don't care if this an rvalue or 
lvalue" comes to a stop as it turns out that you do care in a lot of cases.

-- 
Dmitry Olshansky



More information about the dmd-beta mailing list