Sdílet prostřednictvím


Chyba kompilátoru C3491

'var': Zachytávání podle hodnot nelze změnit v neschovatelném lambdě.

Poznámky

Nesměnitelný výraz lambda nemůže změnit hodnotu proměnné, která je zachycena hodnotou.

Oprava této chyby

  • Deklarace výrazu lambda pomocí klíčového mutable slova nebo

  • Předejte proměnnou odkazem na seznam zachycení výrazu lambda.

Example

Následující příklad vygeneruje C3491, protože tělo nesměnitelného výrazu lambda modifikuje proměnnou mcapture:

// C3491a.cpp

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

Následující příklad vyřeší C3491 deklarováním výrazu lambda s klíčovým slovem mutable :

// C3491b.cpp

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

Viz také

Výrazy lambda