On Monday, 11 January 2021 at 09:42:39 UTC, Ola Fosheim Grøstad wrote:
On Monday, 11 January 2021 at 05:59:03 UTC, Paul Backus wrote:
You can just fall back to `alias expand this` like Phobos's Tuple does in this case. No compiler modification needed.

I though maybe it would be nice in general to be able to create static indexed type by having a special field name pattern, but I will have a another look at staticMap (I don't really want the full staticMap into object.d though).

I have no idea why you're bringing up staticMap here. The simplest way to create a tuple's fields is to use type sequence instantiation [1], like Phobos does:

struct Tuple(Types...)
{
    Types expand;

    // ...
}

You can then access the individual fields with `expand[i]`, where `i` is any compile-time evaluable integer expression. Adding `alias expand this` (as Phobos does) allows the indexing to be performed directly on the tuple, without having to write `.expand` first.

To handle dynamic vs. static indexing you can use a simple static if:

static if (allSameTypes) {
    auto opIndex(size_t i) {
        // ...
    }
} else {
    alias expand this;
}

[1] https://dlang.org/articles/ctarguments.html#type-seq-instantiation
  • I want to create my own Tuple... Ola Fosheim Grøstad via Digitalmars-d-learn
    • Re: I want to create my ... Paul Backus via Digitalmars-d-learn
      • Re: I want to create... Ola Fosheim Grostad via Digitalmars-d-learn
        • Re: I want to cr... Paul Backus via Digitalmars-d-learn
          • Re: I want t... Ola Fosheim Grøstad via Digitalmars-d-learn
            • Re: I w... Ola Fosheim Grøstad via Digitalmars-d-learn
            • Re: I w... Paul Backus via Digitalmars-d-learn
              • Re:... Ola Fosheim Grøstad via Digitalmars-d-learn
              • Re:... Ola Fosheim Grøstad via Digitalmars-d-learn
                • ... Ola Fosheim Grøstad via Digitalmars-d-learn
                • ... Ola Fosheim Grøstad via Digitalmars-d-learn
                • ... Paul Backus via Digitalmars-d-learn
                • ... Ola Fosheim Grøstad via Digitalmars-d-learn
                • ... Paul Backus via Digitalmars-d-learn
                • ... Ola Fosheim Grøstad via Digitalmars-d-learn
                • ... Ola Fosheim Grøstad via Digitalmars-d-learn
                • ... Paul Backus via Digitalmars-d-learn

Reply via email to