On Thursday, 11 February 2016 at 09:02:30 UTC, Jacob Carlborg wrote:
On 2016-02-11 05:34, Adam D. Ruppe wrote:
On Thursday, 11 February 2016 at 04:31:12 UTC, cy wrote:
as[0..$] = new A();

before accessing .stuff on as[0].

Loop through it and allocate each one rather than trying to do it in a
one liner like that.

What about this?

as[] = new A();

Or will that allocate a new one for each element?

import std.stdio;

class Test
{
    int n;
    int m;
}

void main()
{
    auto testArr = new Test[](5);
    testArr[] = new Test();
    foreach (ref test; testArr)
    {
        writeln(cast(void*)test);
    }
}


Output:

2A41010
2A41010
2A41010
2A41010
2A41010


Not really surprising, I guess. You can always do `generate(() => new Test()).take(5).array`.

Reply via email to