On Saturday, 23 November 2019 at 16:38:30 UTC, Ola Fosheim
Grøstad wrote:
Ok, thanks, that is worth exploring. Right now the objects I am
looking at are pure values, so that might be a bit verbose
though.
In many cases, you can just do
auto c = scoped!Class(args, to, ctor);
and it mostly works. The only time you need to explicitly mention
the interface line is when passing to a template by value (since
then it will try to copy the scoped instance and that is a
compile error).
So you can frequently do it less verbosely than I did there.
I also guess LTO happens too late in the process to carry over
information about whether virtuals have been specialised or not.
I don't know really. Maybe I used the wrong argument to ldc too
to enable it.
Yes, I am starting with structs, because pure values ought to
be easier on the optimizer. So one should be able to go to a
fairly high abstraction level and still get good performance.
Yeah, just I expect classes will win overall :) We'll see, I
suppose.