rvalues -> ref (yup... again!)

Rubn where at is.this
Sun Mar 25 00:34:38 UTC 2018


On Saturday, 24 March 2018 at 23:03:36 UTC, John Colvin wrote:
> Auto ref allows the unnecessary copy to be avoided for lvalues 
> and creates a temporary (as part of passing the value) for 
> rvalues. It has downsides (virtual functions and extern(C++), 
> but it does directly address the problem you're talking about, 
> unless I have totally misunderstood you.

You are trading syntax bloat for binary bloat. Having 4 
parameters with auto ref can generate 16 different variants for 
the exact same function. If you are doing any sort of 
mathematical calculations you could cause a potential cache miss 
for calling the same exact function because one of your 
parameters didn't end up being the same type of value. You are 
causing all this bloat and potential slowdowns all to avoid 
having to do this:

float value0 = a + b;
float value1 = c + d;
float value2 = e + f;
someFunc(value0, value1, value2);

That's an inherent flaw in design. You obviously agree that there 
is a problem, but how can you justify "auto ref" being a "good" 
solution to the problem? It's a horrible one, it causes excessive 
bloat and potential slowdowns just to get a cleaner readable 
syntax. That shouldn't be a solution that is deemed acceptable.




More information about the Digitalmars-d mailing list