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