Megjegyzés
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhat bejelentkezni vagy módosítani a címtárat.
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhatja módosítani a címtárat.
A "var" nem engedélyezett, ha az alapértelmezett rögzítési mód referenciaként szolgál
Megjegyzések
Ha azt adja meg, hogy a lambda kifejezés alapértelmezett rögzítési módja referencia, nem adhat át változót a kifejezés rögzítési záradékára való hivatkozással.
A hiba kijavítása
Ne adja át explicit módon a változót a rögzítési záradéknak, vagy
Ne adja meg az alapértelmezett rögzítési módként a referencia szerinti módot, vagy
Adja meg a by-value értéket alapértelmezett rögzítési módként, vagy
Adja át a változót érték szerint a rögzítési záradéknak. (Ez megváltoztathatja a lambda kifejezés viselkedését.)
Example
Az alábbi példa C3488-at hoz létre, mert a változóra n mutató hivatkozás megjelenik egy lambda kifejezés rögzítési záradékában, amelynek alapértelmezett módja a hivatkozás:
// C3488a.cpp
int main()
{
int n = 5;
[&, &n]() { return n; } (); // C3488
}
Az alábbi példa négy lehetséges megoldást mutat be a C3488-nak:
// 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; } ();
}