On 02/05/2015 07:59 PM, tcak wrote: > writeln( "Without: ", (&this + id.offsetof) );
In pointer arithmetic, the increment value means "that many *objects* away", not "than many bytes away".
Since id.offsetof is 4, you are calculating 4 MessageBase objects away (4*8==32 bytes away).
> writeln( "With : ", (cast(size_t)&this + id.offsetof) ); That is not pointer arithmetic, so the increment is just 4. 32 - 4 == 28. Ali