[clang-tools-extra] [clang-tidy] Ignore default ctor with user provided argument in `readability-container-size-empty` (PR #154782)
Baranov Victor via cfe-commits
cfe-commits at lists.llvm.org
Sat Aug 23 06:06:58 PDT 2025
================
@@ -908,3 +908,37 @@ class foo : public std::string{
};
}
+
+namespace GH154762 {
+class TypeRange {
+ std::vector<int> b;
+
+public:
+ TypeRange(std::vector<int> b = {});
+ TypeRange(int);
+ bool operator==(const TypeRange& other) const;
+
+ size_t size() const {
+ return b.size();
+ }
+
+ bool empty() const {
+ return size() == 0;
+ }
+};
+
+void foo(std::vector<int> v) {
+ if (TypeRange(1) == TypeRange(v)) { // no warning
+ }
+
+ if (TypeRange(1) == TypeRange()) {
----------------
vbvictor wrote:
Imagine if we have:
```cpp
TypeRange(std::vector<int> b_ = {2, 2, 2}) : b(_b)
TypeRange(int count) : b(repeat(2, count))
```
So by default the container is not empty but has 3 elements, so this condition:
```cpp
if (TypeRange(1) == TypeRange(/*{2, 2, 2}*/))
```
is _not_ equivalent of
```cpp
if (TypeRange(1).empty())
```
Will the check correctly handle this case?
https://github.com/llvm/llvm-project/pull/154782
More information about the cfe-commits
mailing list