https://issues.dlang.org/show_bug.cgi?id=9792
Witold Baryluk <[email protected]> changed: What |Removed |Added ---------------------------------------------------------------------------- CC| |[email protected] --- Comment #4 from Witold Baryluk <[email protected]> --- I got similar issues with constness, in other cirumstances. `opIndex` and `opSlice` could be made const too, if they return const range or SortedRange, and underlying Range is const. I have a method like this: void search(Range, T)(in T[] needles, in SortedRange!(Range) haystack, long[] ret, const long index_offset) { it is called as search(needles, assumeSorted(kaystack), ret, 0); but the body of this function does pose issues: search.d:67:7: error: mutable method std.range.SortedRange!(const(int)[], "a < b").SortedRange.length is not callable using a const object 67 | if (haystack.length == 0) { | ^ search.d:83:17: error: mutable method std.range.SortedRange!(const(int)[], "a < b").SortedRange.opIndex is not callable using a const object 83 | if (haystack[i] == needles[j]) { This is with gdc 9.3.0-11 and libgphobos76 9.3.0-11. It looks like automatic inference of const methods, or specialization of const and non-const (at the cost of repeating the same code twice) is required to make it work. --
