On Friday, 22 July 2022 at 16:57:21 UTC, Steven Schveighoffer wrote:

It's specifically undefined behavior by the spec, but in practice, I think it will work, as long as the block you have isn't marked as not allowing interior pointers.

See: https://dlang.org/spec/garbage.html#pointers_and_gc

Specifically "Do not take advantage of alignment of pointers to store bit flags in the low order bits"

-Steve

Can you elaborate on why it's probably OK in practice?

I guess the alternative to is to to make them structs instead of classes and manually alloc/free them (or keep them as classes, but still avoid the GC)?

Seems like std.bitmanip.taggedClassRef should have a big warning on it, right?

Thanks

Reply via email to