On Fri, Jul 22, 2022 at 04:50:44PM +0000, Ben Jones via Digitalmars-d-learn wrote: > I'm looking to store a pointer to one of 2 unrelated (no inheritance > relationship) classes and use the LSb to track which type I have. Is > this going to cause any problems with the GC? For one of the classes > I'll have a "pointer" to 1 byte past the start of the object. It > seems like std.bitmanip.taggedClassRep does something similar, so I > assume it's OK, but wanted to double check.
https://dlang.org/spec/garbage.html#pointers_and_gc Section 28.3, paragraph 3 "Undefined Behaviour", 4th item: Do not take advantage of alignment of pointers to store bit flags in the low order bits: p = cast(void*)(cast(int)p | 1); // error: undefined behavior T -- Never step over a puddle, always step around it. Chances are that whatever made it is still dripping.