On Monday, 6 July 2020 at 01:43:43 UTC, user1234 wrote:

---
import std;

struct AA
{
    void opIndexAssign(int v, string k) @nogc
    {}
}

void main(string[] args) @nogc
{
    AA myCustom;

    enum literal = ["one":1, "two":2].stringof[1..$-1];
    enum pairs   = literal.split(',').array;
    static foreach (p; pairs)
    {
myCustom[mixin(p.split(':')[0])] = mixin(p.split(':')[1]);
    }
}
---

`static foreach` actual works for AA literals in `@nogc` functions. So there's no need complicate things with `.stringof`:

struct Foo
{
    int a;
    int b;
}

enum literal = ["one": Foo(1, 2), "two": Foo(3, 4)];

struct AA
{
    void opIndexAssign(Foo value, string k) @nogc
    {
    }
}

void main() @nogc
{
    AA aa;

    static foreach (k, v; literal)
    {
        aa[k] = v;
    }
}

Reply via email to