On Sunday, 5 July 2020 at 21:38:12 UTC, Per Nordlöw wrote:
On Sunday, 5 July 2020 at 21:22:13 UTC, ikod wrote:
struct AA(K,V)
{
    void opAssign(V[K] aa)
    {
    }
}

void main()
{
    AA!(string, int) custom_aa;
    custom_aa = ["one":1, "two":2];
}

Forget to mention that I want the assign call (to `opAssign`) in `main` to be non-(GC)heap allocating like when using C++'s std::initializer_list.

Hereh we go ;)

---
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]);
    }
}
---

Reply via email to