writef, compile-checked format, pointer
Adam D Ruppe
destructionator at gmail.com
Mon Aug 9 22:46:55 UTC 2021
On Monday, 9 August 2021 at 22:30:43 UTC, Ali Çehreli wrote:
> I don't know the reason but I suspect a bug in the compile-time
> checker that involves .init values for arguments.
The compile time checker is pretty bad tbh, it just tries to ctfe
execute the given string and sees if it throws. That's kinda
clever; the simplest thing that can possibly work, no doubt. But
since ctfe cannot work with certain things - like the pointer
casts which are done here* - this makes it a bit fragile. And the
implementation is really really slow and pretty bloated in
codegen too.
My personal policy is to never use it.
* The compiler probably could special-case `null` at least since
that's consistently 0 in D.
> Perhaps the un-typed 'null' literal is used somewhere.
The line is this:
const pnum = () @trusted { return cast(ulong) p; }();
Which is already blargh code, but in ctfe it is a prohibited
operation.
More information about the Digitalmars-d-learn
mailing list