On Saturday, 16 December 2023 at 21:30:55 UTC, kdevel wrote:
If you comment out this line
```
// m[f] = 1;
```
in your main function of your posted code you can catch up with
your
real programm insofar as you now need a ref parameter here, too.
That's because `m[f] = 1` initializes the associative array to
something non-null. If you pass a `null` AA to a function which
adds things, the caller will still have a null pointers. You can
initialize a non-null empty AA like this:
```D
uint[Foo] m = new uint[Foo];
```
Then, `m` can be passed by value and you can make additions or
removals which the caller sees, unless you assign a new AA in the
function.