http://d.puremagic.com/issues/show_bug.cgi?id=2442
Summary: opApply does not allow inferring parameter types when overloaded on const Product: D Version: 2.019 Platform: PC OS/Version: Linux Status: NEW Keywords: rejects-valid Severity: critical Priority: P2 Component: DMD AssignedTo: [EMAIL PROTECTED] ReportedBy: [EMAIL PROTECTED] If I have the following code: struct S { int[] arr; int opApply(int delegate(ref int v) dg) { int result = 0; foreach(ref x; arr) { if(result = dg(x)) break; } return result; } int opApply(int delegate(ref const(int) v) dg) const { int result = 0; foreach(ref x; arr) { if(result = dg(x)) break; } return result; } } This is a properly const-decorated struct. I should be able to call foreach(x; s) Whether s is const or not. However, the compiler currently gives me an error: void main() { S s; foreach(x; s) { x = 5; } } testit.d(32): Error: cannot uniquely infer foreach argument types --