Поделиться через


Ошибка компилятора C3491

"var": параметр, передаваемый по значению, не может быть изменен в лямбда-выражении, объявленном как неизменяемое

Замечания

Неизменяемое лямбда-выражение не может изменить значение переменной, передаваемой по значению.

Исправление ошибки

  • Объявите лямбда-выражение с ключевым словом mutable или

  • передайте переменную по ссылке в список передачи лямбда-выражения.

Example

В приведенном ниже примере возникает ошибка C3491, так как тело неизменяемого лямбда-выражения изменяет передаваемую переменную m:

// C3491a.cpp

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

В приведенном ниже примере ошибка C3491 устраняется путем объявления лямбда-выражения с ключевым словом mutable :

// C3491b.cpp

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

См. также

Лямбда-выражения