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.

Reply via email to