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

    <tr>
        <th>Summary</th>
        <td>
            [clang] No lazy evaluation of boolean alternative in a constant-evaluated expression
        </td>
    </tr>

    <tr>
      <th>Labels</th>
      <td>
            clang
      </td>
    </tr>

    <tr>
      <th>Assignees</th>
      <td>
      </td>
    </tr>

    <tr>
      <th>Reporter</th>
      <td>
          dawmd
      </td>
    </tr>
</table>

<pre>
    Clang rejects this code:

```cpp
#include <concepts>

template <typename T, bool AlreadyEvaluated = false>
struct is_addable {
 static constexpr bool value = AlreadyEvaluated || requires (T t) {
 requires is_addable<decltype(t + t), std::same_as<decltype(t + t), T>>::value;
    };
};

int main() {
 static_assert(is_addable<int>::value, "");
}
```

Flags used to compile the code: `-std=c++23`
Clang version: 19.0.0 llvm/llvm-project@5bfe4b93e15ad38f211c5dec64be0eeaa4c8e914
</pre>
<img width="1px" height="1px" alt="" src="http://email.email.llvm.org/o/eJx8U82O8zYMfBr5QmwgU_49-LBJvhx72vuClphEhWy5lpw2ffpCdpPdbIEChPwjcsgZjSgEexmZO1HuRXnMaIlXP3eG_hxM1ntz7w6OxgvM_DvrGCBebQDtDQv1LuRRyMdayS30NP37B5UdtVsMg1AH7UfNUwxC_fpeFnmYHMU1Jd4nHmlg-BB4gN57B-9uZjL3XzdyC0U2INQRzuQCP3FCnBcdwYZPMoZ6xyDq_bYFIVK0GrQfQ-S_pnkDTWC8Iv0Xvj6I-gAz_7HYmQMIbD4gCmy_gT43v1oKdTCsXSIgsIkgcL9WJR4hmiSVeg808CeF_8v9SKxSpPx1TKEebQFA1Mfn98v7utoxwkB2FNi8Dryp8Ekh8BwFNi9z2zH-6IgHEIhrtC_tXs_5e-uTo0uAJbCB6EH7YbKOIV754RQQlXxblThqgXuBe1RPjM1gN56D9WNKztud3Elw7jYIPKXH2zT75D9RyLI_c9G3ivOSjGrOmOe6NKyromfJTFTohtu8yEynTKtayrjL67yWWFWqzK6dpjY3tdGNMigpr5Sqm7KpyrpBddZcZ7ZDiYUssUVVSlXusMe66quGkfKyzs-ikDyQdbs02s7Pl8yGsHDXqrqUmaOeXVjvE6JO3JKW5TGbu5VKv1yCKKSzIYYvhGijWy_hVlEe4TcPjv6-A2_utH4Ef14dzDQCucjzSNHeGOwItJmcxvjGTzcny3NIqmbL7LprjFNIJ40ngaeLjdel32n_0Pin1HhaWQWBp43YrcN_AgAA___FAENY">