rvalue references

Manu via Digitalmars-d digitalmars-d at puremagic.com
Tue Jun 2 18:27:53 PDT 2015


On 3 June 2015 at 07:21, Andrei Alexandrescu via Digitalmars-d
<digitalmars-d at puremagic.com> wrote:
> On 6/2/15 11:19 AM, Jonathan M Davis wrote:
>>
>> On Tuesday, 2 June 2015 at 18:05:20 UTC, Namespace wrote:
>>>
>>> AFAIK Andrei wanted 'auto ref' as the syntax which accepts both,
>>> lvalues and rvalues. That's why I'm asking if the current behaviour
>>> for auto ref for templates should change, or not. If not, we have (as
>>> you said) two meanings of auto ref, what is not optimal, but not so
>>> bad either (IMO).
>>> But if I had the choice, I would change it for both, so that both
>>> create a temporary variable for rvalues.
>>
>>
>> Andrei originally wanted auto ref to apply to non-templated functions,
>> but Walter misunderstood what he meant and created what we have now -
>> which is actually incredibly useful, because it allows you to forward
>> the attributes of an argument - in particular, it's ref-ness. So, we
>> definitely do _not_ want to lose that.
>
>
> Yah, auto ref for templates is great. We only need to add auto ref for
> non-templates with the semantics "like ref, except (a) accepts rvalues on
> the caller side, (b) does not allow escaping the ref from the function".
>
> Note that __traits(isRef, param) doesn't work in an auto ref param in a
> non-template function (attempt to use must be a compile-time error).
>
> That's about it.


You're killing me! I thought 'scope ref' was more-or-less agreed? auto
ref makes no sense.


More information about the Digitalmars-d mailing list