[Issue 17031] New: isSortedRange uses string comparisons to check for sortedness
via Digitalmars-d-bugs
digitalmars-d-bugs at puremagic.com
Sun Dec 25 22:35:45 PST 2016
https://issues.dlang.org/show_bug.cgi?id=17031
Issue ID: 17031
Summary: isSortedRange uses string comparisons to check for
sortedness
Product: D
Version: D2
Hardware: x86_64
OS: Linux
Status: NEW
Severity: enhancement
Priority: P1
Component: phobos
Assignee: nobody at puremagic.com
Reporter: greeenify at gmail.com
Have a look at the way find is specialized to take advantage of sorted ranges:
https://github.com/dlang/phobos/blob/master/std/algorithm/searching.d#L1377
static if (is(typeof(pred == "a == b")))
enum isDefaultPred = pred == "a == b";
else
enum isDefaultPred = false;
...
static if (is(InputRange : SortedRange!TT, TT) && isDefaultPred)
Yep it does a string comparison and thus if the user defines a custom lambda,
`find` won't take advantage of the sortedness. Moreover if another range
function e.g. retro or find is applied the sortedness is not propagated.
FYI: this was introduced in https://github.com/dlang/phobos/pull/4907
--
More information about the Digitalmars-d-bugs
mailing list