Echa un vistazo a este fragmento de código:
int x = 3; const int &y= x; auto f = [y]() mutable{ y = 0; };clangs da error:
> clang++-7 -pthread -std=c++17 -o main main.cpp main.cpp:13:7: error: cannot assign to a variable captured by copy in a non-mutable lambda y = 0; ~ ^ 1 error generated. Funciona si es capturado por [y=y] .
¿Por qué es este comportamiento? ¿Es ese tipo de deducción del compilador como const int? Si es así, ¿por qué clang da error sobre lambda no mutable?
[actualizar]
Parece que la primera parte de la pregunta ya tiene una respuesta, como lo señalaron otros: la captura de lambda por valor mutable no funciona con const &?
La información de error de clang parece ser un error que no se analiza en esa pregunta. ¿Debería eliminar la pregunta?