================ @@ -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()) { ---------------- flovent wrote:
This check can not, it will need more code and logic which it's may not easy to implement because we will need to analyze `size()` and ctor to know how we get this container's size, did default ctor leaves this container empty. Unless we limit this kind of check to container we already know like STL, otherwise FP will indeed occur. https://github.com/llvm/llvm-project/pull/154782 _______________________________________________ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits