$ cat qq.cpp ``` #include <map> bool my_contains_1(std::map<int, int> const& m, int key) { return m.find(key) != m.end(); } bool my_contains_2(std::map<int, int> const& m, int key) { return m.count(key) > 0; } ``` $ /usr/local/clang-17/bin/clang-tidy '-checks=readability-container-contains' contains.cpp -- -std=c++20 1 warning generated. /tmp/contains.cpp:8:13: warning: use 'contains' to check for membership [readability-container-contains] 8 | return m.count(key) > 0; | ^~~~~ ~~~ | contains Despite https://clang.llvm.org/extra/clang-tidy/checks/readability/container-contains.html, readability-container-contains" does not handle "find()".
Activity
PiotrZSL commentedon Jan 25, 2024
Interesting, in C++20 this code looks like this:
when in C++17:
And check support only binaryOperator, so it won't work on iterators objects. Looks like support for those 2 need simply be added.
adesitter commentedon Jan 25, 2024
readability-container-contains
is only relevant in C++20 mode.operator== is equally affected:
adesitter commentedon Jan 31, 2024
readability-container-contains
does not handle pointer dereferencing.[clang-tidy][readability-container-contains] Fix matching of non-bina…
[clang-tidy][readability-container-contains] Fix matching of non-bina…
[clang-tidy][readability-container-contains] Fix matching of non-bina…
[clang-tidy][readability-container-contains] Fix matching of non-bina…
[clang-tidy][readability-container-contains] Fix matching of non-bina…