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

    <tr>
        <th>Summary</th>
        <td>
            [Clang][C++] Better error message for defining a friend function in a local class defintion
        </td>
    </tr>

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

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

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

<pre>
    Reproducer:

```cpp
void f() {
    struct A {
        friend void foo() {}
 };
}
```

compiled with `--std=gnu++23`.

---

clang-19.1.0:
```
<source>:3:21: error: no matching function found in local scope
    3 |         friend void foo() {}
      |                     ^~~
1 error generated.
```

gcc-14-2:
```
<source>: In function 'void f()':
<source>:3:21: error: cannot define friend function 'foo' in a local class definition
    3 |         friend void foo() {}
      | ^~~
```
</pre>
<img width="1px" height="1px" alt="" src="http://email.email.llvm.org/o/eJysk8uO4yoQhp-mvEG2oCBxvPAi6XSksz1vgAE7jGywAHdrNv3sI1-6454ZzUUaFMWozF_U_7lKxmg7Z0wNhwscrpmc0t2HWsvXQWeN11_r_80YvJ6UCcDPQK9A3_-PdP2pcVwjL95q0gKeACsC5WWNEkJITGFSiZw_R-fVBmucJqvU-524vG4n5x3fZB_Rj9v3JSk_jLY3mrzadCdwpHkekwZ-7dwEeAG8IIcjLfaaPM8_peil63JWFaygD8PfXcafop-CMsCfgZ858DMy4GdiQvAzJuI8GWRSd-s60k5OJesdaf3kNLGO9F7JnkTlR_OAwQmUT-QvsCxrr9kvODy_va0H2VoW6YwzQSaji18Q7JTKmcjxD62T_9zDH2C57wDA8pHlt8SUdM4nok1rnXm3v0-9UChnfHIDqHoZ46qw86l_wXLH7cN5pmuuK17JzNSs5EjxKI6Y3euqpCdelvLUSMoaJXTL2vJkGmEq0YpTk9kaKQrGWMUElgILI1CW2AitqDg2jIOgZpC2L_r-ZSh86DIb42Rqxo4nesp62Zg-LrOJuHQmIM5jGupZkDdTF0HQ3sYUHymSTf0y0E-L4nCdt2v7w-FKLiYlE7amGEyMsjOk9WEj6Toif-D_c-rzq2wKfX1PaYzzx8Yb4K2z6T41hfID4G2uanvkY_BfjEqAt8VlBLxtRl9q_BYAAP__HdVEFw">