initializing a static array
kinke
noone at nowhere.com
Tue Oct 10 22:00:27 UTC 2017
On Tuesday, 10 October 2017 at 14:15:07 UTC, Simon Bürger wrote:
> On Tuesday, 10 October 2017 at 13:48:16 UTC, Andrea Fontana
> wrote:
>> Maybe:
>>
>> double[n] bar = 0.repeat(n).array;
>
> This works fine, thanks a lot. I would have expected `.array`
> to return a dynamic array. But apparently the compiler is smart
> enough to know the length. Even the multi-dimensional case
> works fine:
>
> double[n][n] bar = 0.repeat(n).array.repeat(n).array;
I hope this is not performance-critical code. The assembly is
terrible for such code, at least for LDC, doing a GC allocation,
unrolled reset to zero, then memcpying the dynamic array back to
the stack: https://godbolt.org/g/uXBN75
`double[n] bar = void; bar[] = 0;` (2 lines, granted) results in
a memset.
More information about the Digitalmars-d-learn
mailing list