[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