Perhaps someone can help solve this mystery. I have a sample
program that adds structs to an associative array (as keys) in a
subroutine. The program passes the array by reference as expected
(below).
My real program does the same thing and yet the associative array
is passed by value. Thus a
On Saturday, 16 December 2023 at 20:04:54 UTC, Kevin Bailey wrote:
I've added a TON of writeln's to confirm this. The *instant* I
made the parameter "ref", the real program starts acting as
expected, and the print-outs show the correct results.
If you comment out this line
```
//m[f] = 1;
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 a
On Saturday, 16 December 2023 at 22:44:16 UTC, Dennis wrote:
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.
I've gotten this error in deployed Perl. Whenever
On Saturday, 16 December 2023 at 22:44:16 UTC, Dennis wrote:
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
On Sunday, 17 December 2023 at 00:10:56 UTC, Kevin Bailey wrote:
instead it seems like 'm' is a pointer to a std::map, that is
initialized on use if null. (I think it's that latter part that
gives the illusion of being already initialized.)
Yes:
https://dlang.org/spec/hash-map.html#constructi