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 ?

Reply via email to