<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">