<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">