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

    <tr>
        <th>Summary</th>
        <td>
            [clang-format] missed space before operator when formatting expression inside requires
        </td>
    </tr>

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

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

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

<pre>
    Clang format formats this code:
```cpp
template<typename T, typename V>
concept CheckMultiplicableBy = requires(T a, V b) {
  { a * b } -> std::same_as<T>;
  { b * a } -> std::same_as<T>;
  { a *= b } -> std::same_as<T&>;
};
```

Into this:
```cpp
template<typename T, typename V>
concept CheckMultiplicableBy = requires(T a, V b) {
  { a* b } -> std::same_as<T>;
  { b* a } -> std::same_as<T>;
  { a *= b } -> std::same_as<T&>;
};
```

I.e. removes space before `*`.

With brackets works fine:
```cpp
template<typename T, typename V>
concept CheckMultiplicableBy = requires(T a, V b) {
  { (a * b) } -> std::same_as<T>;
  { (b * a) } -> std::same_as<T>;
  { a *= b } -> std::same_as<T&>;
};
```

Clang format version:
```
$ clang-format-19 --version 
Ubuntu clang-format version 19.1.6 (++20241217110052+657e03f8625c-1~exp1~20241217110110.73)
```

Config (`clang-format-19 file.cpp --dump-config`): https://pastebin.com/6pKSdncm
</pre>
<img width="1" height="1" alt="" src="http://email.email.llvm.org/o/eJzMVUuPpDYQ_jXFpQSyi24eBw5097YURTllsjlGxhSNMzwc28zuXPa3RzDs7PYqUrJRpIyE5EJ8Xz0-VxXKe3ObmCs4nuB4idQS-tlVuufb7J6XqJnb5-o8qOmG3exGFfbDY-iNRz23DGkNooZMvDzaWhB14NEOKjCk5_BseVIj4wPQGV_f3kP6DkSt50mzDXjuWT_-tAzB2MFo1Qx8ekZIL-j4j8U49kDFA6rVxXtsgEqE_ASixvVEhUA1Ngj5BWNI36EP7ZpXWns18m_KQ3p-WAOmXzjNxlHfxdnirFn9XSjKXpmQX3bjs0SrLeofpjBvKr4JAf-Ffv-zfAkn6Hicn9ijt0ozNtzNjnGF0ApPXpC_mtBj45R-5ODxw-wePXZmehONC1Tsvfvy5Z9rCVTsHfy9zP_yFu5WwxM7b-bpG11Xmw6oV2T8goxliXG8wxFE_UuzTGG5w3z2hrJMZJKt9QKdgE4k6CBJ5lIKcSSgU3bMWaRdkdFRx_ITf7Ty01cgKUWSp0DlX2Q_T525ba4z8W2CnRk40dZiHLfLaGO9gbfmKiGtsQ_BbrNLV6CrVT5wY6ZEzyPQNbM__txOeozaKm3LtFQRVzJPj4UsiyKP-qrRXZcT5bpMVZl3aX44yKzMWBVNpojyyFQk6CikIElSUp5IEjorSaQ6LwqmDg6CR2WGZBiexmR2t8h4v3AlSR5yGQ2q4cFve53o69qAaN30rlp5cbPcPBzEYHzwXzwFE4btn3BHPF5wNN5zez9vs2WnwuzwQ8_T3gvBTDfkj9ax3y7RTN60_DoT0eKG6l7Amwn90uzyrYnsR2zd_DvrAHTd6vNA173Ep4r-DAAA__8Hoe_5">