<table border="1" cellspacing="0" cellpadding="8">
<tr>
<th>Issue</th>
<td>
<a href=https://github.com/llvm/llvm-project/issues/98772>98772</a>
</td>
</tr>
<tr>
<th>Summary</th>
<td>
Wrong error message when capturing const object by reference
</td>
</tr>
<tr>
<th>Labels</th>
<td>
new issue
</td>
</tr>
<tr>
<th>Assignees</th>
<td>
</td>
</tr>
<tr>
<th>Reporter</th>
<td>
vovchikzd
</td>
</tr>
</table>
<pre>
When trying to create a mutable lambda with const object captured by reference and then mutate that object
``` c++
int main() {
const int a = 69;
auto lambda = [&r = a](int x) mutable {
r += x;
return r;
};
}
```
you got incorrect error message
```
<source>:4:11: error: cannot assign to a variable captured by copy in a non-mutable lambda
4 | r += x;
| ~ ^
```
but r is captured by reference and lambda is mutable
godbolt example: https://godbolt.org/z/sKd3bh6aM
</pre>
<img width="1px" height="1px" alt="" src="http://email.email.llvm.org/o/eJyEU0FzozwM_TXiomnGyBDCgUPaNJdvvnPPxijgXbAztkmbHva37zikbbLT2WU8g23pSXp6lgrB9Ja5gfIRyl2m5jg435zcSQ_m53uXta47Ny8DW4z-bGyP0aH2rCKjwmmOqh0ZRzW1ncJXEwfUzoaIrv3BOqJWxzh77rA9o-cDe7aaUdkOYwqZ8JExDuoTAWIHYgtrsSzUQI9pXa6NjTgpY4E2QDVCdb1HxGve5KEQ5A7XNcgbs5qj-6gzmRNfWvvLXkG5A9ok7FuK-0HrLn76PKZS5A7f7mJfTBxnb9F_GaDafR7S_p7Ycjy7GXuXytbO-8SfvXceJw5B9fwtBuRTcLPXDPIZ5LYAuc1zkNsFmjZaWesiLtomwRSelDcXTreKaHc8o7Go0Dr7cC_mF7sCoXrCf7bg1ukXQvn8bfHtHNGjCX95GVeRTPjQYUH2rmvdGJHf1HQcOfEcYjwGkFugPdD-6rByvgfavwPtw3-dbIe1-j_rGtnVslYZN3lFohayKMtsaKoDlbnI27VSdcU6zw-b_FAIKYjEhvI6Mw0JKkSVSxJFkZertjtUcq3WmqmsqSihEDwpM67G8TSl3JkJYeam3lQVZaNqeQyX4SKy_IoXIxClWfNNwjy0cx-gEKMJMXxFiSaO3Lx4Z_v7N4GvaXKW9qV5vJu322Zmsx-bP1pk4jC3K-0moH1Kdf09HL1LeKD9pcAAtF8InBr6HQAA__-Ttz6E">