<table border="1" cellspacing="0" cellpadding="8">
    <tr>
        <th>Issue</th>
        <td>
            <a href=https://github.com/llvm/llvm-project/issues/124815>124815</a>
        </td>
    </tr>

    <tr>
        <th>Summary</th>
        <td>
            [clang-tidy] Invalid fixit from modernize-use-ranges for nullptr with std::unique_ptr
        </td>
    </tr>

    <tr>
      <th>Labels</th>
      <td>
            clang-tidy
      </td>
    </tr>

    <tr>
      <th>Assignees</th>
      <td>
      </td>
    </tr>

    <tr>
      <th>Reporter</th>
      <td>
          chrchr-github
      </td>
    </tr>
</table>

<pre>
    ~~~c++
#include <vector>
#include <algorithm>
#include <memory>
#include <ranges>

bool f(const std::vector<std::unique_ptr<int>>& v) {
    return std::find(v.begin(), v.end(), nullptr) == v.end();
}

bool g(const std::vector<std::unique_ptr<int>>& v) {
    return std::ranges::find(v, std::unique_ptr<int>()) == v.end();
}

int main() {
 std::vector<std::unique_ptr<int>> a;
    a.emplace_back();
    return g(a);
}
~~~
~~~
<source>:7:12: warning: use a ranges version of this algorithm [modernize-use-ranges]
    1 | #include <vector>
    2 | #include <algorithm>
    3 | #include <memory>
    4 | #include <ranges>
    5 | 
 6 | bool f(const std::vector<std::unique_ptr<int>>& v) {
    7 | return std::find(v.begin(), v.end(), nullptr) == v.end();
      | ^~~~~~~~~ ~~~~~~~~~  ~~~~~~~
      |            std::ranges::find v
1 warning generated.
~~~
https://godbolt.org/z/zsP6nM9oc
I'm not sure why `ranges::find` does not accept `nullptr` here (as opposed to normal `find`), but it is rejected by all three major compilers.
</pre>
<img width="1" height="1" alt="" src="http://email.email.llvm.org/o/eJy0VU2P4ygQ_TXkUoplQ_yRgw_uTkeaw0r7D0YYyjazGLKA3Zs55LevcDuZTE96tXNolA9CPR71XqoM9171BrEm-RPJDxs-hcG6WgxODG7bqzBM7aa18lxfLhdB6FN8pQ2hTBmhJ4lA2POMIlhH2MsvEa5761QYxkfBEUfrzo8ijpse_RpJm9ZaDR2hlbDGB_BBEtYQ1lzPfb6tTEb9PeHXU4iryoRIwV4ILWAmdA-kjMkDADgMkzM_qDplJKHVnLTYK0NoReie0GeYE1wC608zaR3JIxc7EHb4CcAWa8rDXdb9p2Z99eleQUzzP5lXMf9DgTIBRn6145rHbwsB_sYbFfAEx5PmAr-2XPx1f-qdvmgaf5fO5XK5fcYj7eQELvxNSViTUcIaeOXOKNPH6eQROLwZBDM6r6wB20EYlIdbWQLJn0Yr0Rn1HbeTx-1qaX5YU8qAlM_wcb1HDH2AeVf5EcYewO57IGJ2DzD33RAx-RsmbaBYZp_QHuVC_HlNAstYZOQvl3XA5Ta7Tn-C3o0POwBmkjbZtRCgR4OOB5TJrXiGEE7LBnok9Nhb2VodEut6Qo_f49v_WZg_9laQtPlCaDmCsQH85BBehzOQIv2l64oUpEW_ALkQeAoRdrWhSGFAhxCL2oM9naxHCcGCsW7kOkJXltW_dgqgAigPDr-hCCihPQPXGsLgEGHk36wDYceT0uh8spE1k3u25xuss5JVabUvimIz1KVk2b5gGdsxpKKQQu5kUbJsn-9Yi0JsVE1TmqcZrbJql6VF0qay4l1WtF0nUuxasktx5EonWs9jNGmjvJ-wzuiuyvKN5i1qv9wdlArNTb8NSp4JpfEucXXctW2n3pNdqpUP_gdPUEEvt87dtvwAX8zMtZLQqX9UgM7ZER71J3TWXesMXlUYHj3yNpPT9bu_e7nQEmFHQo8xl_Vre3I2Wk3ocRHoCT2uGuea_hsAAP__528oGg">