New abstraction: Layout
Steven Schveighoffer
schveiguy at yahoo.com
Sat Feb 17 13:19:46 UTC 2018
On 2/16/18 7:04 PM, 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
Can't you just use offsetof?
struct S
{
ubyte x;
int y;
}
static foreach(i; 0 .. s.tupleof.length)
{
writeln(s.tupleof[i].offsetof);
}
outputs:
0
4
-Steve
More information about the Digitalmars-d
mailing list