<table border="1" cellspacing="0" cellpadding="8">
<tr>
<th>Issue</th>
<td>
<a href=https://github.com/llvm/llvm-project/issues/87035>87035</a>
</td>
</tr>
<tr>
<th>Summary</th>
<td>
[clang-format] weird formatting when template function name is `foreach`
</td>
</tr>
<tr>
<th>Labels</th>
<td>
clang-format
</td>
</tr>
<tr>
<th>Assignees</th>
<td>
</td>
</tr>
<tr>
<th>Reporter</th>
<td>
c8ef
</td>
</tr>
</table>
<pre>
- expected: https://godbolt.org/z/hqGE53fKW
```C++
#include <functional>
#include <iostream>
#include <string>
#include <vector>
template <typename Iter, typename Callable, typename... Args>
void foeach(Iter current, Iter end, Callable op, Args const &...args) {
while (current != end) {
std::invoke(op, args..., *current);
++current;
}
}
int main() {
std::vector<int> primes{2, 3, 5, 7, 11};
foeach(
primes.begin(), primes.end(),
[](std::string const &prefix, int i) {
std::cout << prefix << i << '\n';
},
"- value: ");
}
```
- unexpected: https://godbolt.org/z/5rzTTefKe
```C++
#include <functional>
#include <iostream>
#include <string>
#include <vector>
template <typename Iter, typename Callable, typename... Args>
void foreach (Iter current, Iter end, Callable op, Args const &...args) {
while (current != end) {
std::invoke(op, args..., *current);
++current;
}
}
int main() {
std::vector<int> primes{2, 3, 5, 7, 11};
foreach (
primes.begin(), primes.end(),
[](std::string const &prefix, int i) {
std::cout << prefix << i << '\n';
},
"- value: ")
;
}
```
</pre>
<img width="1px" height="1px" alt="" src="http://email.email.llvm.org/o/eJzsVk2P4zYM_TX0RYhhU_HXwYdMMimKvS7QsyIziVrZSiU5s7u_vqDjOJNt51Cgtylg0BIlPlGPfE5UCOY0ELVQvECxS9QYz863uqZjcnDd93Yl6NuFdKQO5EacY7wEkBvAPeD-5LqDszF1_gS4_wG4P__5y2shj19-g2wH2Wa2ZXZ7toAv_Ny8KM2g7diRALk9joOOxg3Kgnz9pw3GhehJ9R8sh-jNcPpg8Uo6Ov9YnGyk_mJVnDbE7xcaVE_i10gecCsWx1ZZqw6W3jvTNBUbfwoL4NWZThwdKX0GrBlD6NF7GiKHTXMaOh7f4YS78JRRhHZDiAKwTNNUMSw2AqqZJSHezsaSAKxnSAGYg9zdEJ92ChEiVwnkxgxX9wcB1rdzGDZNUx4CbpbcGpDvgm_FuS8-VqDazbwtg8maIYpemQGwfk5kyeLO-9Yw4Ku4eNNTgOoFORPJpmBTsclzxn8cu_A5O27B6YFO9yM5avZOZMy-x42EuHU1YL3kdGuUB-kXT0fzjaH4PuZvlD7Rqt0YuV9A8skceJ-Z-wCwgmI78Es-wfDtfkoOcSWuyo7E0gLE9xV5kH1Xz3vuV2Ic_o0uC__j61c6fqHPqEvPjST-V-Z_p8yF0c-lzUdBPlZp0rWya2SjEmrzKs_LOl8XZXJuy67W8oBYNo0u1lhpoqbSssFcl1gcm8S0mOE6k9hkMlvnZUqYab2uMeuUKjrMYZ1Rr4xNrb32LO7EhDBSW1eZLBKrDmTD9DuOqK0aTquj872KnHyxS3zLYavDeAqwzqwJMTyAool2-g_wFFjsxBsZP2moVzFycd7ONIhFo_fPg5hEaYKAMpvbg7kYvW1_-jSZeB4PqXY94J6Pn1-ri3e_k46A--lSAXA_3euvAAAA__8ShGsX">