Call site 'ref'

Timon Gehr timon.gehr at gmx.ch
Wed Jan 18 09:27:05 PST 2012


On 01/18/2012 06:13 PM, Andrei Alexandrescu wrote:
> On 1/15/12 7:21 PM, Timon Gehr wrote:
>> On 01/16/2012 02:00 AM, Andrei Alexandrescu wrote:
>>> On 1/15/12 6:38 PM, Timon Gehr wrote:
>>>> On 01/16/2012 01:35 AM, Andrei Alexandrescu wrote:
>>>>> On 1/15/12 6:30 PM, Peter Alexander wrote:
>>>>>> On 15/01/12 11:56 PM, Jonathan M Davis wrote:
>>>>>>> On Monday, January 16, 2012 00:41:14 Timon Gehr wrote:
>>>>>>>> Well, struct literals are lvalues, at least in DMD.
>>>>>>>
>>>>>>> Yeah. I don't understand that. I've argued about it with Walter
>>>>>>> before.
>>>>>>> Apparently they are in C++ as well. I don't understand it. It
>>>>>>> makes it
>>>>>>> so that
>>>>>>
>>>>>> In C++, struct literals are rvalues. C++ just has a special rule that
>>>>>> const references can bind to rvalues (but non-const references
>>>>>> cannot),
>>>>>
>>>>> That's a bad rule that we shouldn't copy.
>>>>>
>>>>> Andrei
>>>>
>>>> What do you think is an optimal rule regarding struct
>>>> literals/lvalues/rvalues and ref parameters?
>>>
>>> auto ref
>>>
>>> Andrei
>>
>> But that only works for templates?
>
> For non-templates, if it's important to distinguish between lvalues and
> rvalues, use two overloads.
>
> Andrei

Currently 'auto ref' gives a compile error if used in a non-templated 
function parameter list. What are the semantics of 'auto ref' you have 
in mind? Are they specified somewhere?



More information about the Digitalmars-d mailing list