auto ref and non-templated functions

deadalnix deadalnix at gmail.com
Wed Dec 26 14:02:25 PST 2012


On Tuesday, 25 December 2012 at 14:11:14 UTC, Andrei Alexandrescu 
wrote:
> On 12/25/12 5:36 AM, Jonathan M Davis wrote:
>> On Tuesday, December 25, 2012 11:14:40 Namespace wrote:
>>>> What does this generate?
>>>>
>>>> auto foo(auto ref S a, auto ref S b, auto ref S c, auto ref S
>>>> d) { ... }
>>>>
>>>> 16 different functions, one for each combination? Sounds 
>>>> like a
>>>> bad idea.
>>>
>>> In my opinion, this should produce only two functions:
>>> #1: auto foo(ref S a, ref S b, ref S c, ref S d) { ... }
>>> #2: auto foo(S a, S b, S c, S d) { ... }
>>
>> So, you'd take the performance hit of copying all of your 
>> function arguments
>> simply because one of them was an rvalue?
>>
>> No. I think that Peter's point shows exactly why this is a bad 
>> idea.
>>
>> However, creating only one version of the function which takes 
>> all refs and
>> specifcally creating variables underneath the hood for any 
>> rvalues so that
>> they can be passed to the function still seems like it could 
>> work.
>
> Yes, that does work and is easy to implement.
>
> Andrei

Sound like the wayt o go for me. But is ato ref needed in such 
case ? Why not simply allow ref to behave that way ?


More information about the Digitalmars-d mailing list