Thread overview
mutable pointers as associative array keys
Apr 10, 2023
John Colvin
Apr 10, 2023
JG
Apr 11, 2023
John Colvin
April 10, 2023

It seems that it isn't possible, am I missing something?

alias Q = int[int*];
pragma(msg, Q); // int[const(int)*]

Also, is this documented somewhere?

April 10, 2023

On Monday, 10 April 2023 at 18:14:56 UTC, John Colvin wrote:

>

It seems that it isn't possible, am I missing something?

alias Q = int[int*];
pragma(msg, Q); // int[const(int)*]

Also, is this documented somewhere?

It seems to be so (which is strange) and I can't image it is by design since you
can do this:

```d
    static struct Pointer(T) { T* val; }
    int[Pointer!int] f;
    pragma(msg,typeof(f));
    int* val = new int;
    *val = 5;
    f[Pointer!int(val)] = 12;
    *val = 6;
    f[Pointer!int(val)].writeln;  //12
```
April 10, 2023

On 4/10/23 2:14 PM, John Colvin wrote:

>

It seems that it isn't possible, am I missing something?

alias Q = int[int*];
pragma(msg, Q); // int[const(int)*]

Yep, it's been that way forever. Only with pointers and arrays. It's fine with mutable classes and structs (even if they contain pointers).

>

Also, is this documented somewhere?

No.

It's also completely useless. Having const keys does nothing to guarantee unchanging keys. Another half-assed attempt to be encode correct semantics but fails completely in its goal.

-Steve

April 10, 2023
On 4/10/23 4:25 PM, Steven Schveighoffer wrote:
> It's also completely useless. Having const keys does nothing to guarantee unchanging keys. Another half-assed attempt to be encode correct semantics but fails completely in its goal.

In case you wonder how old this is:

https://issues.dlang.org/show_bug.cgi?id=11477
https://issues.dlang.org/show_bug.cgi?id=12491#c2

-Steve
April 11, 2023
On Monday, 10 April 2023 at 20:31:43 UTC, Steven Schveighoffer wrote:
> On 4/10/23 4:25 PM, Steven Schveighoffer wrote:
>> It's also completely useless. Having const keys does nothing to guarantee unchanging keys. Another half-assed attempt to be encode correct semantics but fails completely in its goal.
>
> In case you wonder how old this is:
>
> https://issues.dlang.org/show_bug.cgi?id=11477
> https://issues.dlang.org/show_bug.cgi?id=12491#c2
>
> -Steve

Oh dear.