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

    <tr>
        <th>Summary</th>
        <td>
            [Clang] Clang incorrectly accepts invalid lambda in default argument that references function parameter
        </td>
    </tr>

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

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

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

<pre>
    _**Generated by Fuzzer.**_

Clang accepts following invalid code which is rejected by GCC and MSVC.
It correctly rejects invalid lambda usage in function bodies (e.g., `int i = [] { return i; }();`), but incorrectly accepts the identical invalid pattern when used in default arguments. 
Reproducer: https://godbolt.org/z/M3xeM5Mcn


## Program
```cpp
int g(int i = [] {
 return i;
}()) {
  return i;
}

int main() {
  return g();
}
```
</pre>
<img width="1" height="1" alt="" src="http://email.email.llvm.org/o/eJxsk1FvozoQhX_N8DIqMnYg4YEHkorqPkS6ulda7Vtl7Al4ZWxkm3bbX78iSZNVFckSCGaGcw7fyBjN4IgaKPdQPmdySaMPzU9npM96rz-aV-At8PaFHAWZSGP_gd3y-Ukhv7x5BdYCaw9WugGlUjSniCdvrX83bkDj3qQ1GpXXhO-jUSOaiIF-kbpOezkcUDqNx_9_HHJg7T8JlQ-BVLIf18J4G2Pl1GuJS5QDoXF4WpxKxjvsvTYUEfiO8iEHfkComHEJDYJ4xos_hO0eA6UlODQg9gjbZ-A74DWIPVRsveEH7JeExt1FfLlKI6HR5JJR0t4kzTIlCg7fR3K4RNKrLk0nudiEMgzLRC7FHIG1_9EcvF4UBRAtjinNEUQLvAPeDV733qbchwF49wm8O4rfdCyPyl0SXg8XwAX-G_wQ5LQ-qNjlqHkG1q5-B-C7R76BtX9bX5tv5nn9VfGg5PzldeIkjbs0fK8e7iHeer6UZboRuha1zKgptuWmLOtNUWZjsynrjapFKVSvVVER67WW26LXUlWqFjozDWe8ZDu2ZbWoyjIXoiqEVrwqdFGXbAsbRpM0Nrf2bVqDy0yMCzVFyTfVNrOyJxvPaHOuVj6B85Xy0KwNT_0yRNgwa2KK9xHJJHvehzPRa3gXtB8B8Y3KB_8d0ygTBjpRIKco3oGdZZATJQrZEmzzjQWTxqXPlZ-Ad6uy6-VpDn7dB-Dd2WkE3l3NvjX8TwAAAP__4t8vqA">