On Friday, 27 June 2025 at 19:55:30 UTC, WraithGlade wrote:
Thanks for responding to my question and for your time, etc.

I was aware of `align` but as far as I am aware it is orthogonal to what I'm asking about. The Andrei book says that D automatically rearranges members of `class`s in memory to avoid wasting memory due to padding between members whose width is less than the native CPU word size alignment, whereas `struct`s are left as is (meaning the members aren't reordered for alignment padding optimization).

The `align` command specifies alignments but doesn't seem relevant to automatic rearranging of members for classes.

I'm not sure if D does that or not anymore, since (as you said) it has been a long while since that book was published.

I think you're referring to [this description in the spec](https://dlang.org/spec/class.html#fields):

The D compiler is free to rearrange the order of fields in a class to optimally pack them. Consider the fields much like the local variables in a function - the compiler assigns some to registers and shuffles others around all to get the optimal stack frame layout. This frees the code designer to organize the fields in a manner that makes the code more readable rather than being forced to organize it according to machine optimization rules. Explicit control of field layout is provided by struct/union types, not classes.

Reply via email to