www.digitalmars.com         C & C++   DMDScript  

digitalmars.D.learn - mutable pointers as associative array keys

reply John Colvin <john.loughran.colvin gmail.com> writes:
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?
Apr 10 2023
next sibling parent JG <jg jg.com> writes:
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 ```
Apr 10 2023
prev sibling parent reply Steven Schveighoffer <schveiguy gmail.com> writes:
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
Apr 10 2023
parent reply Steven Schveighoffer <schveiguy gmail.com> writes:
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
Apr 10 2023
parent John Colvin <john.loughran.colvin gmail.com> writes:
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.
Apr 11 2023