On 02/21/2018 12:53 AM, Basile B. wrote:
On Saturday, 17 February 2018 at 00:04:16 UTC, Andrei Alexandrescu wrote:
I've been long bothered that the builtin .tupleof and our own
abstractions Fields and RepresentationTypeTuple in std.traits - all
omit the essential information of field offsets. That makes types that
use align() to have the same .tupleof, Fields, and
RepresentationTypeTuple even though they shouldn't.
The right answer is Layout a tuple of (offset, type) pairs describing
entirely the memory layout of a type. We need such for memory
allocation, garbage collection, serialization, and more.
The implementation turned out to be quite compact - 81 lines including
a compile-time mergesort. Destroy!
https://github.com/dlang/phobos/pull/6192
Andrei
how does this deal with static members ?
Static members are not part of the layout - aside from lexical scoping,
they have the same regime as module-level static data. -- Andrei