structs are now lvalues - what is with "auto ref"?

Dmitry Olshansky dmitry.olsh at gmail.com
Mon Dec 24 10:11:58 PST 2012


12/24/2012 9:57 PM, Jonathan M Davis пишет:
> On Monday, December 24, 2012 12:37:54 Andrei Alexandrescu wrote:
>> An important smoking gun is C++'s min(), which is allows writing unsafe
>> code without casts.
>>
>> const int& haveANiceDay = min(4, 5);
>
> But what does that have to do with const& for function parameters?

It relates directly as one may then pass the result of min to fun(const 
ref T);

> I can agree
> that it's bad for local variables like that, but such references aren't legal
> in D anyway - const or not. const& on function paramters merely avoids a copy,
> and as long as you don't take the reference of that parameter (which you can't
> do in D) and then assign it to something or return it, it can't survive past
> the point that it leaves scope.
>
> I get the impression that your complaints about rvalue references stem from
> issues with them that have nothing to do with function parameters, and it's
> the function parameters that everyone cares about.
>
> That being said, I don't think that having const ref take rvalues is a good
> solution for D given how strict its const is - rather I think that we should
> figure out how to make auto ref work for non-templated functions - but I fail
> to see how making const ref accept rvalues would really cause any problems.
>
> - Jonathan M Davis
>


-- 
Dmitry Olshansky


More information about the Digitalmars-d-learn mailing list