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

    <tr>
        <th>Summary</th>
        <td>
            [clang-format] BreakTemplateDeclarations and RequiresClausePosition
        </td>
    </tr>

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

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

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

<pre>
    Hello.

Trying to define a ruleset for forcing a line break after the template declaration, while allowing the requires clause to be on the same line.

The corresponding options are `BreakTemplateDeclarations` and `RequiresClausePosition`. Setting the `RequiresClausePosition` to `WithPreceding` or `SingleLine` only works if `BreakTemplateDeclarations` is **not** set to `Yes`.

In an ideal world, I could configure both, but it seems that `BreakTemplateDeclarations` is stronger.
```
BreakTemplateDeclarations: Yes
RequiresClausePosition: WithPreceding
```

Expected output:
```cpp
template <typename T> requires std::floating_point<T>
using LerpValue = ClampedValue<T, T{ 0 }, T{ 1 }>;
```
The current behavior:
```cpp
template <typename T>
requires std::floating_point<T>
using LerpValue = ClampedValue<T, T{ 0 }, T{ 1 }>;
```
</pre>
<img width="1" height="1" alt="" src="http://email.email.llvm.org/o/eJzEVE1v4zYQ_TXUZRCDpizJPuig2DG6wB4W3aBFT8WIHEvsUqRKjpL63xfUepOmaPpxKiBB4ny9N8OHwZTs4IlaUd2L6lTgwmOIrU42XYs-mGv7HTkXNkJ2QnaP8Wr9ABzA0MV6AoS4OErEcAkxvzr7EVx29pHwC-CFKQKPBEzT7JAJDGmHEdkGL9QRnkfrCNC58LxWHwki_brYSAm0wyVRRuwJgl-dCSdaEb6xGgl0iJHSHLzJJcKcayfASCBqeZ-JPN7QT6_gSdQS0Jsc8_0N8bgCfgrJrvRquYHPxPyN2N9FZpailj9aHj9F0pSpZHOI2fzZ-sHRR-tptXl3hecQvySwl3_kaBMI1QnV-cBffyDP_CveT5RjbrP44AE9WEPocnln8oA_gA6LM6CDv9hhiQR94DF7-oXBMiSiKQGPyP-GSuIY_EBxhazl7ZHd-3llB5ml7N6ZXdnB26m9LSxk9_DbTJrJQFh4XliU3R9j9DwL2b3oS5RHvs7ks04eRfnwKqfEJqeW3cUFzJf68xysZ1Eec5yQ3ZLyTX-kOP-AbsmlTnB0OM1kVsMaqY7wKJp7kCCa08tpu57KB1He_4n_KtAlRvIMPY34ZEP8bx0I2f2fPRSmLc2hPGBB7bapynpXlkoVY2sORpV9TU1dqYNpGo3bfW2IzG6_R13rwrZKqko2qtke5H6nNgZpX-16VBWWjTYodpImtG7j3NO0CXEobEoLtdtK7ndV4bAnl9btpJR26Ie7S4gTslAq76vY5ry7fhmS2ElnE6fXSmzZrZvtTWJ1gneVum6DvxZpsUTXjsxzlrNQZ6HOg-Vx6Tc6TEKdM-rtczfH8AtpFuq8NpOEOt_6eWrV7wEAAP__hqXEXQ">