Poznámka:
Přístup k této stránce vyžaduje autorizaci. Můžete se zkusit přihlásit nebo změnit adresáře.
Přístup k této stránce vyžaduje autorizaci. Můžete zkusit změnit adresáře.
"var" se vyžaduje, pokud je výchozí režim zachycení podle hodnoty.
Poznámky
Pokud určíte, že výchozí režim zachycení výrazu lambda je podle hodnoty, nelze předat proměnnou hodnotou do klauzule capture tohoto výrazu.
Oprava této chyby
Nepředávejte proměnnou explicitně do klauzule capture nebo
Nezadávejte podle hodnoty jako výchozí režim zachycení nebo
Určení podle odkazu jako výchozího režimu zachycení nebo
Předejte proměnnou odkazem na klauzuli capture. (Toto chování výrazu lambda může změnit.)
Example
Následující příklad vygeneruje proměnnou n C3489 podle hodnoty v klauzuli capture výrazu lambda, jehož výchozí režim je podle hodnoty:
// C3489a.cpp
int main()
{
int n = 5;
[=, n]() { return n; } (); // C3489
}
Následující příklad ukazuje čtyři možná řešení na 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; } ();
}