On 2/18/18 4:52 AM, Dmitry Olshansky wrote:
On Saturday, 17 February 2018 at 19:37:12 UTC, Steven Schveighoffer wrote:
On 2/17/18 9:59 AM, Andrei Alexandrescu wrote:
On 02/17/2018 09:03 AM, Steven Schveighoffer wrote:
I found this also works:

static foreach(alias x; S.tupleof)
{
    writeln(x.offsetof);
}

Yes, the implementation uses offsetof.


I guess I'm just confused based on the statement "the builtin .tupleof ... [omits] the essential information of field offsets."

What is this construct giving us that .tupleof doesn't?


I guess the construct captures offsets as part of type. This is useful for allocators + 2 things with same Layout can be bitblitted to each other.

I haven't looked at it in depth, so I didn't know the result of the abstraction (I thought it was a tuple, or a pair of tuples).

Note, you could do this without the need for a new abstraction, simply with .tupleof on the type itself.

And static foreach has made this much simpler. But definitely the interface to getting things from tupleof is not consistent. This reason alone may be cause to add such a construct.

-Steve

Reply via email to