Compartilhar via


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, ou

  • Passe 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);
}

Confira também

Expressões Lambda