<table border="1" cellspacing="0" cellpadding="8">
<tr>
<th>Issue</th>
<td>
<a href=https://github.com/llvm/llvm-project/issues/71033>71033</a>
</td>
</tr>
<tr>
<th>Summary</th>
<td>
clang 17.0.2: No shadowing warning on lambda capture
</td>
</tr>
<tr>
<th>Labels</th>
<td>
clang
</td>
</tr>
<tr>
<th>Assignees</th>
<td>
</td>
</tr>
<tr>
<th>Reporter</th>
<td>
pkl97
</td>
</tr>
</table>
<pre>
This simple code does not trigger a -Wshadow warning in clang++ 17.0.2, however g++ 8.5 emits a warning:
```c++
void f()
{
int* ptr=nullptr;
const auto& lambda=[&]()
{
int* ptr=nullptr;
};
}
```
When explicitly capturing "&ptr", a warning is emitted by clang.
If using -Wshadow-all, clang emits a -Wshadow-uncaptured-local warning, although ptr is clearly captured.
```console
lambda_capture.cpp:6:14: warning: declaration shadows a local variable [-Wshadow-uncaptured-local]
int* ptr=nullptr;
^
lambda_capture.cpp:3:10: note: previous declaration is here
int* ptr=nullptr;
^
1 warning generated.
```
</pre>
<img width="1px" height="1px" alt="" src="http://email.email.llvm.org/o/eJyUVE2PozgQ_TXFpRQEdoBw4JBsNtJe9rRSH1cGV8Azjo1sk57-9yMDIZ3DjKajCH-V6716z7bwXvWGqIHiBMU5EVMYrGvG77quktbKj-a_QXn06jZqws5KQmnJo7EBg1N9Tw4F7t78IKR9x3fhjDI9KoOdFqYHdgJ2wrxKs5QB-wsH-053cvhYOaQF0k0Fj-KxGfgRsjNkRyiz5d8twcvs3SqJV2AHYPUaV61LiIjKBGBHHIMDfjaT1nPvU0BnjQ8opmCBlajFrZUC-DnWz0oozp8zx_iX7H-EANV5G8f-azHL8G0gg_Rj1KpTQX9gJ8YwuSgdMAasjDnZrJh4iupnqQJJbD8WfdM1-fz954qTj4EPO3ZC65hiDt1k3lYns6CS3GnbCb0ZEFF1GOzUD7HMCNxpEm7jSfIF-GmUNd5qWmYXaf9fd6TdOAI_lsCP-R748ZPbKKnTwomgrMGFW-S5cLoLp0SrCaE4_ZJ5tO1rHm0_KP7-DV0e6WaRo7GBYjs6uis7-RfSyuNAjr5wCl-x883jngw5EZ4CP6RNZMNlzWuRUJOX9aHOszrjydBcy5JEVcu2qmRxKGXVtbUURcGvhZA1bxPVsIzxPM9YVu3zPU85v_Iq5y1xyQ4sK2Gf0U0onWp9v6XW9YnyfqKmyjPOEy1a0n5-HxhbLzWLT4VrYvyunXoP-0wrH_wzQ1BBU7McvPX28yP-a1d_Y6mPkq1Zb-HjcCWT080QwujjU8AuwC69CsPUpp29AbtEkLXZjc5-oy4Au8ycPbDLTPtnAAAA__9Il3XF">