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

    <tr>
        <th>Summary</th>
        <td>
            [clang][rejects valid][c++20] bad parse of constrained friend function
        </td>
    </tr>

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

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

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

<pre>
    The following should compile (-std=c++20):

```c++
template <class A>
concept always_true = true;

struct receiver {
  template <class Tag = int>
  friend void tag_invoke( always_true auto, receiver self) {
  }
};
```

All recent versions of clang including trunk rejects this code with:


```
<source>:9:43: error: template parameter missing a default argument
    9 |   friend void tag_invoke( always_true auto, receiver self) {
      | ^
<source>:8:25: note: previous default template argument defined here
    8 |   template <class Tag = int>
      | ^
1 error generated.
Compiler returned: 1
```

https://godbolt.org/z/6G1hPsKM3

</pre>
<img width="1px" height="1px" alt="" src="http://email.email.llvm.org/o/eJysVE2vozYU_TVmc_UibEMCCxZJmHRRVepi9iNjX8AdY0f-yNP011eGfLzOjKouBiFs2Zd7zrk-viIEPVnEjtQnUveFSHF2vkOvpdU4GPTF4NS37vOMMDpj3Lu2E4TZJaNAuuWqDQJhzVuIivBeEnYi7MRKwlrCj6TsSfn47svtvcdsqxGXqxERgfCzNCIEOBL-aduTzkq8RhDmXXwLX6JPOayHPCH89DF5iD7JCB4l6ht6IIf7NsCPCJ_FtObRNj6xAEav0Sq4Oa0giumLtjf3FQlr_oUvUnSEnV9IAc1IWPsRkRz6O7dD_-L5kP-R9tGYNZONcEMftLMB3AjSCDuBttIklcsdfbJfweNfKGOAOOsA0imEdx3n76v8UzB-Di55iVkuP-aTqTjhR0Dvnc-TZ5GuwosFI3pYdAgZXIDCUSQTQfgpLWjjQydAln2GX1m7_OScpP70U-4N4UdWZ8rWRczj1eNNuxSeNJ9aHnzzjraoYEaPL6DmTv7_GuQHanSrH0xo0YuIaretn7dr4cFjTN6iyjTpf9hgjvEa8kGyC2GXyanBmbhzfiLs8jdhl_1vdP4z_P4H38IL1XHV8lYU2NFD2TJO-Z4Wc6caNowoqkOp9nSgUrJqGMtmKBu6PwwSC92xklUlYy1tWEvb3b5q6oFWtGaSVjWnpCpxEdrsjLktmUGhQ0jYNbza08KIAU1YWwVjq0kJY7lr-C7Hvw1pCqQqjQ4xvDJEHc3aX7Y_6p7Up4eXb8JotS29WkfdwyBUtmLA9To4G6IX6xHenTYmK6N2tkjedN-VT8c5DTvpFsIumcR9eLt6l0EJu6yaAmGXVdY_AQAA__9Z9oNm">