On Sunday, 21 July 2024 at 10:33:38 UTC, Nick Treleaven wrote:
On Sunday, 21 July 2024 at 05:43:32 UTC, IchorDev wrote:
Does this mean that array literals are *always* separately
allocated first, or is this usually optimised out?
My understanding is that they do not allocate if used to
initialize or assign a static array. That includes passing an
array literal as an argument to a static array function
parameter.
A scope slice can also be initialized from an array literal in
@nogc code:
https://dlang.org/changelog/2.102.0.html#dmd.scope-array-on-stack
Another (related) case that doesn't heap allocate is when passing
a literal as a scope parameter:
```d
void main() @nogc {
f([1,2]);
}
void f(scope int[]) @nogc;
```
I will look at adding these cases to the spec.