monarch_dodra:

Ideally, I wish we could allocate static arrays on the heap easily:

"int[2]* p = new int[2]()"

To do that I wrap the array inside a static struct:

struct Arr {
    int[2] a;
}

Arr* data = new Arr;
writeln(data.a[1]);


Anybody know why this doesn't work?

Maybe it's just a matter of syntax. You see it if you use:

struct Arr {
    int[2] a;
    alias this = a;
}
Arr* data = new Arr;

Now what's data[1]? It's data.a[1] or is it the second (missing) struct Arr?

So to do that you need transparent references, like "ref int[2]", that in D are only present inside functions.

Bye,
bearophile

Reply via email to