digitalmars.D.learn - Implicit .dup inserting into AA keyed on char[], or not?
- "Nick Sabalausky" <a a.a> Mar 03 2011
- Andrej Mitrovic <andrej.mitrovich gmail.com> Mar 03 2011
- Jonathan M Davis <jmdavisProg gmx.com> Mar 03 2011
- "Nick Sabalausky" <a a.a> Mar 03 2011
In D2, if you do this:
void foo(char[] key)
{
bool[char[]] aa;
aa[key] = true;
}
Does that last line allocate a duplicate of key's data?
Mar 03 2011
But it errors out? Error: associative arrays can only be assigned values with immutable keys, not char[]
Mar 03 2011
On Thursday 03 March 2011 17:54:46 Nick Sabalausky wrote:In D2, if you do this: void foo(char[] key) { bool[char[]] aa; aa[key] = true; } Does that last line allocate a duplicate of key's data?
More like it's illegal. The key type for associative arrays _must_ be immutable. Previously, that wasn't check for by the compiler, which meant that it was possible to change the values of keys (not good), which could quickly result in an AA in an invalid state. Not too long ago, however, it was fixed so that that's not legal. - Jonathan M Davis
Mar 03 2011
"Jonathan M Davis" <jmdavisProg gmx.com> wrote in message news:mailman.2156.1299206161.4748.digitalmars-d-learn puremagic.com...On Thursday 03 March 2011 17:54:46 Nick Sabalausky wrote:In D2, if you do this: void foo(char[] key) { bool[char[]] aa; aa[key] = true; } Does that last line allocate a duplicate of key's data?
More like it's illegal. The key type for associative arrays _must_ be immutable. Previously, that wasn't check for by the compiler, which meant that it was possible to change the values of keys (not good), which could quickly result in an AA in an invalid state. Not too long ago, however, it was fixed so that that's not legal.
Ahh, I'm still on 2.050 so that's probably why it worked for me. (There's no particular reason I haven't updated to 2.051 or 2.052, I just got busy with non-D stuff for awhile and haven't gotten around to it.)
Mar 03 2011









Andrej Mitrovic <andrej.mitrovich gmail.com> 