On Monday, 18 May 2015 at 23:55:40 UTC, Freddy wrote:
How do you allocate an associative array on the heap?
----
void main(){
        alias A=int[string];
        auto b=new A;
}
----
$ rdmd test
test.d(4): Error: new can only create structs, dynamic arrays or class objects, not int[string]'s
Failed: ["dmd", "-v", "-o-", "test.d", "-I."]

They are allocated on the heap implicitly; there's no need for `new`. You actually *can't* use new with an AA, which is what the compiler is telling you.

void main()
{
    alias A = int[string];
    A b = []; //No allocation yet, b is null
    b["test"] = 1; //b is now non-null
}

Reply via email to