November 20, 2014 [Issue 13756] New: [AA] Allow ref const index on foreach AA iteration | ||||
---|---|---|---|---|
| ||||
https://issues.dlang.org/show_bug.cgi?id=13756 Issue ID: 13756 Summary: [AA] Allow ref const index on foreach AA iteration Product: D Version: D2 Hardware: All OS: All Status: NEW Severity: enhancement Priority: P1 Component: DMD Assignee: nobody@puremagic.com Reporter: k.hara.pg@gmail.com Currently iterating AA on foreach disallows taking key value by ref. void main() { int[int] aa = [1:2]; foreach ( k, v; aa) {} foreach ( k, ref v; aa) {} foreach (ref k, v; aa) {} // NG foreach (ref k, ref v; aa) {} // NG } This is intended behavior to disallow the key object mutation stored in the hidden AA slot, but it has a drawback that we cannot avoid copying key objects in each iterations. For the efficiency, I'd propose to allow taking key object by ref const. void main() { int[int] aa = [1:2]; // typeof(k) == const(int) foreach (ref k, v; aa) {} // Error: index must be type const(int), not int //foreach (ref int k, v; aa) {} // OK foreach (ref const int k, v; aa) {} } -- |
Copyright © 1999-2021 by the D Language Foundation