<table border="1" cellspacing="0" cellpadding="8">
    <tr>
        <th>Issue</th>
        <td>
            <a href=https://github.com/llvm/llvm-project/issues/81515>81515</a>
        </td>
    </tr>

    <tr>
        <th>Summary</th>
        <td>
            [clang-tidy] False positive bugprone-non-zero-enum-to-bool-conversion with custom operator and negation
        </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>
    A slight variation of [#65315](https://github.com/llvm/llvm-project/issues/65315)
~~~c++
enum E { E1 = 1, E2 = 2 };
E operator&(E a, E b) { return static_cast<E>((int)a & (int)b); }
void f(E e) {
    if (!(e & E1)) {}
}
~~~
~~~
[<source>:4:10: warning: conversion of 'E' into 'bool' will always return 'true', enum doesn't have a zero-value enumerator [bugprone-non-zero-enum-to-bool-conversion]
    4 |     if (!(e & E1)) {}
      |          ^
[<source>:1:6: note: enum is defined here](javascript:;)
    1 | enum E { E1 = 1, E2 = 2 };
      | ^
~~~
https://godbolt.org/z/r1P3zx38a
</pre>
<img width="1px" height="1px" alt="" src="http://email.email.llvm.org/o/eJycVM-OszgMfxpzsRgRBwocOLRTet43WAUIkE-ZpEpCZ2cOffZV0imz-qSVdlZCik3sn52f_wjv1WKk7KA6QXXOxBZW67pxdePq8kWFdRuywU4f3RG9Vssa8CacEkFZg3bG6Eb8UHFWQXUGatYQrh74EegCdHkAvIz2Deii9e155Fdnf8kxAF2U95v0QJcHCLVQnKE43u_3EegUv6RLs71hj1CfsGcI_IwM6BV7SjIh1GfgX7Y92qt0IlgHdABqehTJFgegNkE4GTZn0AcR1PjnKHwA_toD74EaoEaZANQKBDrgrkZn4KcUKYW5WTXhnPDlF_DjAhFRzZiwGFAjE1DPIsCX3RNjF-73-29CpJa_eru5UcbM-LEEfmQF8CO-C2eUWaI4WnOTzj_rQXUPVKMywUZlsFZH_V1pjUK_iw__fDxQHdwmgepITuJ3stKb-B9XcZMo8FM6m9-E3mQyeJAaiz5sy9VZI3NjTZ6s4n0ebB4j5t9Jxa7YSSkR6lf8AT3Jdnd6KFX_b_ww4MdD5MTYIOOZHqU8TnJWRk64SicfbfpL3IQfnbqG2Kv8tPddDMFSxJ903Heee3p7HX-bCDsNVocX6xagyyfQxbE_-OdfvBHZ1PGp5a3IZMfqoq4PZdm02dqJmnMah6qtWnY41OXMynlmczO2Qzu37ZSpjgoqC2LE2oJR9dKWYi5ZM0xyOrTjzKAs5JtQ-iUOX4ydpbHrGlaxKtNikNqnFUA0amGWPKjpA4jiSnBdmthhWzyUhVY--G-YoIJOy-MfbtUZL0J7iVfrVVA3if-5W_BdhRXHzQf7tg8xCjOhkUtaOtnmdPf_l0x68N8BAAD__29bcbo">