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