Partilhar via


Erro do compilador C3491

'var': uma captura por valor não pode ser alterada numa lambda não mutável

Observações

Uma expressão lambda não mutável não pode modificar o valor de uma variável capturada pelo valor.

Para corrigir este erro

  • Declare sua expressão lambda com a mutable palavra-chave, ou

  • Passe a variável por referência à lista de captura da expressão lambda.

Example

O exemplo a seguir gera C3491 porque o corpo de uma expressão lambda não mutável modifica a variável mde captura:

// 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 mutable palavra-chave:

// C3491b.cpp

int main()
{
   int m = 55;
   [m](int n) mutable { m = n; }(99);
}

Consulte também

Expressões do Lambda