digitalmars.D.bugs - [Issue 16255] New: std.algorithm.iteration.each on opApply doesn't
- via Digitalmars-d-bugs (33/33) Jul 08 2016 https://issues.dlang.org/show_bug.cgi?id=16255
https://issues.dlang.org/show_bug.cgi?id=16255 Issue ID: 16255 Summary: std.algorithm.iteration.each on opApply doesn't support ref Product: D Version: D2 Hardware: All OS: All Status: NEW Severity: normal Priority: P1 Component: phobos Assignee: nobody puremagic.com Reporter: schveiguy yahoo.com Look at this code: struct S { int x; int opApply(int delegate(ref int _x) dg) { return dg(x); } } void main() { S s; foreach(ref a; s) ++a; assert(s.x == 1); } If we replace the foreach loop with an each call, we would do: s.each!"++a"; Except it doesn't work. When each accepts the iterable, it accepts it by value. It should accept it by reference (if it's a class, it could take the class reference by value). Otherwise, the point of using ref throughout each is kind of useless. --
Jul 08 2016