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" není povolen, pokud je výchozí režim zachycení podle odkazu
Poznámky
Pokud určíte, že výchozí režim zachycení výrazu lambda je odkazem, nelze předat proměnnou odkazem na klauzuli capture tohoto výrazu.
Oprava této chyby
Nepředávejte proměnnou explicitně do klauzule capture nebo
Nezadávejte podle odkazu jako výchozí režim zachycení nebo
Zadejte podle hodnoty jako výchozí režim zachycení, nebo
Předejte proměnnou hodnotou do klauzule capture. (Toto chování výrazu lambda může změnit.)
Example
Následující příklad generuje C3488, protože odkaz na proměnnou n se zobrazí v klauzuli capture výrazu lambda, jehož výchozí režim je podle odkazu:
// C3488a.cpp
int main()
{
int n = 5;
[&, &n]() { return n; } (); // C3488
}
Následující příklad ukazuje čtyři možná řešení na C3488:
// C3488b.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-reference as the default capture mode.
[&n]() { return n; } ();
// Possible resolution 3:
// Specify by-value as the default capture mode.
[=, &n]() { return n; } ();
// Possible resolution 4:
// Pass n by value to the capture clause.
[n]() { return n; } ();
}