Erro do compilador C3491
'%$I': uma captura por valor não pode ser modificada em um lambda não mutável
Uma expressão lambda não mutável não pode modificar o valor de uma variável capturada por valor.
Para corrigir este erro
Declare sua expressão lambda com a palavra-chave
mutable
, ouPasse a variável por referência à lista de captura da expressão lambda.
Exemplos
O exemplo a seguir gera C3491 porque o corpo de uma expressão lambda não mutável modifica a variável de captura m
:
// C3491a.cpp
int main()
{
int m = 55;
[m](int n) { m = n; }(99); // C3491
}
O exemplo a seguir resolve C3491 declarando a expressão lambda com a palavra-chave mutable
:
// C3491b.cpp
int main()
{
int m = 55;
[m](int n) mutable { m = n; }(99);
}