Nuta
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zalogować się lub zmienić katalogi.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
Wartość "var" jest wymagana, gdy domyślny tryb przechwytywania to wartość by-value
Uwagi
Po określeniu, że domyślny tryb przechwytywania wyrażenia lambda to wartość by-value, nie można przekazać zmiennej według wartości do klauzuli capture tego wyrażenia.
Aby poprawić ten błąd
Nie przekazuj jawnie zmiennej do klauzuli capture lub
Nie należy określać wartości według jako domyślnego trybu przechwytywania lub
Określ według odwołania jako domyślny tryb przechwytywania lub
Przekaż zmienną, odwołując się do klauzuli capture. (Może to zmienić zachowanie wyrażenia lambda).
Example
Poniższy przykład generuje zmienną n C3489 wyświetlaną według wartości w klauzuli przechwytywania wyrażenia lambda, którego tryb domyślny jest wartością bajtową:
// C3489a.cpp
int main()
{
int n = 5;
[=, n]() { return n; } (); // C3489
}
W poniższym przykładzie przedstawiono cztery możliwe rozwiązania dla C3489:
// C3489b.cpp
int main()
{
int n = 5;
// Possible resolution 1:
// Do not explicitly pass n to the capture clause.
[=]() { return n; } ();
// Possible resolution 2:
// Do not specify by-value as the default capture mode.
[n]() { return n; } ();
// Possible resolution 3:
// Specify by-reference as the default capture mode.
[&, n]() { return n; } ();
// Possible resolution 4:
// Pass n by reference to the capture clause.
[&n]() { return n; } ();
}