On Wednesday, 10 August 2022 at 09:52:10 UTC, ag0aep6g wrote:
On 10.08.22 10:20, Johan wrote:
```
shared immutable int[int] aa;
void main () {
// (cast()aa)[1] = 1; // works without immutable
(*cast(int[int]*)(&aa))[1] = 1;
}
```
We have shared static constructors for that:
shared static this()
{
aa[1] = 1; /* no cast needed */
}
But our code is not a toy example ;-) (sorry for unnecessary
snarky remark)
```
void f() {
aa[1] = 1; // error
}
shared static this()
{
f();
}
```
I had considered it, but discarded it... `f` is also a template
in our code. Your remark made me check again, and the call chain
is short, perhaps I'll convert `f` to a template mixin...
Unfortunately doesn't work: "immutable variable `aa`
initialization is not allowed in nested function `f`".
-Johan