On Sunday, 14 June 2020 at 23:30:03 UTC, Andrei Alexandrescu wrote:
It's really easy if members in the layout are given internal names that include information about the original index.

You can construct a list of member aliases in the original order and then 'alias this' that:

import std.meta;

struct Tuple(A...) {
    alias Reordered = AliasSeq!(A[1], A[2], A[0]);
    Reordered value;

    alias reordered = AliasSeq!(typeof(this).tupleof);
alias original = AliasSeq!(reordered[2], reordered[0], reordered[1]);
    alias original this;
}

void main() {
    Tuple!(byte, int, short) t;

static assert(is(typeof(t.tupleof) == AliasSeq!(int, short, byte)));

    static assert(is(typeof(t[0]) == byte));
    static assert(is(typeof(t[1]) == int));
    static assert(is(typeof(t[2]) == short));
}
  • Interesting work on packing... Andrei Alexandrescu via Digitalmars-d-announce
    • Re: Interesting work o... user1234 via Digitalmars-d-announce
    • Re: Interesting work o... Timon Gehr via Digitalmars-d-announce
      • Re: Interesting wo... Andrei Alexandrescu via Digitalmars-d-announce
        • Re: Interestin... Avrina via Digitalmars-d-announce
          • Re: Intere... Andrei Alexandrescu via Digitalmars-d-announce
            • Re: I... Avrina via Digitalmars-d-announce
              • R... Paul Backus via Digitalmars-d-announce
                • ... Timon Gehr via Digitalmars-d-announce
                • ... Andrei Alexandrescu via Digitalmars-d-announce
                • ... Max Samukha via Digitalmars-d-announce
                • ... Andrej Mitrovic via Digitalmars-d-announce
                • ... Max Samukha via Digitalmars-d-announce
                • ... Max Samukha via Digitalmars-d-announce
                • ... Timon Gehr via Digitalmars-d-announce
                • ... Andrej Mitrovic via Digitalmars-d-announce
                • ... Max Samukha via Digitalmars-d-announce
                • ... Andrej Mitrovic via Digitalmars-d-announce
                • ... Andrei Alexandrescu via Digitalmars-d-announce
              • R... Andrei Alexandrescu via Digitalmars-d-announce
    • Re: Interesting work o... Andrej Mitrovic via Digitalmars-d-announce

Reply via email to