On Friday, 27 May 2016 at 09:02:17 UTC, Johan Engelen wrote:
That language guarantee prevents optimization of the
initialization (in this case, the optimized result would be no
initialization at all). So a breaking language spec change
would be needed. Is this pursued by anyone? Perhaps only relax
the spec when the struct S overrides opEquals ?
(Once the optimization is allowed, I think it will be a fun
project for me to implement it in LDC. But please keep the
discussion clean by not discussing how a compiler should make
use of this language change, how to implement it, etc. Thanks!)
If opEquals and opCmp are overridden then I don't see why voids
in initialization can't work since how you are comparing it would
determine equality and not a bitwise compare...
Hmmm had a longer reply involving changes to a new struct type
with a few changes...