I think this should really just be `return find!(not!predicated)(range);`

Code re-use is always good, and even if this seems "trivial", different range types have different "optimal" iteration primitives. `find` is very aggressivelly optimized to exploit them (or at least, *should* be (https://github.com/D-Programming-Language/phobos/pull/1492/files#L0R4400)) (`foreach(ref c; arr)` for sliceable random access, `std.uni.decode` for strings, and *then* fallback to a for loop for the rest of the ranges.)

Ditto for above, where I think it would be worth calling:

```D
    bool pred2()(auto ref ElementType!R v)
    {
        return v != element;
    }
    return find!(pred2)(range);
```

Also, nitpick: I'm pretty sure we used the name `pred` for every predicate in the module.