New abstraction: Layout

Andrei Alexandrescu SeeWebsiteForEmail at erdani.org
Wed Feb 21 12:35:04 UTC 2018


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


More information about the Digitalmars-d mailing list