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