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