Błąd kompilatora C3493Compiler Error C3493

nie można przechwycić "var", ponieważ nie określono żadnego domyślnego trybu przechwytywania'var' cannot be implicitly captured because no default capture mode has been specified

Puste wyrażenie lambda przechwytuje, [] określa, że wyrażenie lambda nie jawnie lub niejawnie nie przechwytuje żadnych zmiennych.The empty lambda expression capture, [], specifies that the lambda expression does not explicitly or implicitly capture any variables.

Aby poprawić ten błądTo correct this error

  • Określ domyślny tryb przechwytywania lubProvide a default capture mode, or

  • Jawnie Przechwyć co najmniej jedną zmienną.Explicitly capture one or more variables.

PrzykładyExamples

Poniższy przykład generuje C3493, ponieważ modyfikuje zmienną zewnętrzną, ale określa pustą klauzulę przechwytywania:The following example generates C3493 because it modifies an external variable but specifies the empty capture clause:

// C3493a.cpp

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

Poniższy przykład rozwiązuje C3493 przez określenie jako domyślny tryb przechwytywania.The following example resolves C3493 by specifying by-reference as the default capture mode.

// C3493b.cpp

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

Zobacz teżSee also

Wyrażenia lambdaLambda Expressions