MagentaTreehouse wrote:

We should not flag [contextual 
conversions](https://en.cppreference.com/w/cpp/language/implicit_conversion#Contextual_conversions)
 to `bool`. This is supported by C++ Core Guidelines [ES.87: Don’t add 
redundant `==` or `!=` 
conditions](https://isocpp.github.io/CppCoreGuidelines/CppCoreGuidelines#es87-dont-add-redundant--or--to-conditions):

> ```c++
> // These all mean "if p is not nullptr"
> if (p) { ... }            // good
> if (p != nullptr) { ... } // redundant !=nullptr, not recommended
> ```

> ```c++
> // These all mean "if p is nullptr"
> if (!p) { ... }           // good
> if (p == nullptr) { ... } // redundant == nullptr, not recommended
> ```

It looks like we can interpret the issue request to be an implemenation of a 
specific case of [ES.46: Avoid lossy (narrowing, truncating) arithmetic 
conversions](https://isocpp.github.io/CppCoreGuidelines/CppCoreGuidelines#es46-avoid-lossy-narrowing-truncating-arithmetic-conversions):

> **Note** This rule does not apply to [contextual conversions to 
> bool](https://en.cppreference.com/w/cpp/language/implicit_conversion#Contextual_conversions):
> ```c++
> if (ptr) do_something(*ptr);   // OK: ptr is used as a condition
> bool b = ptr;                  // bad: narrowing
> ```

(Side note: I think it is good to be a Clang-Tidy check under the 
`cppcoreguidelines` group)


https://github.com/llvm/llvm-project/pull/131523
_______________________________________________
cfe-commits mailing list
cfe-commits@lists.llvm.org
https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits

Reply via email to