Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
"var" ist erforderlich, wenn der Standarderfassungsmodus ein Modus nach Wert ist.
Bemerkungen
Wenn Sie angeben, dass der Standarderfassungsmodus für einen lambda-Ausdruck ein Modus nach Wert ist, können Sie keine Variable nach Wert an die Erfassungsklausel dieses Ausdrucks übergeben.
So beheben Sie diesen Fehler
Übergeben Sie die Variable nicht explizit an die Erfassungsklausel, oder
geben Sie "nach Wert" nicht als Standarderfassungsmodus an, oder
geben Sie "nach Verweis" als Standarderfassungsmodus an, oder
übergeben Sie die Variable nach Verweis an die Erfassungsklausel. (Dies kann das Verhalten des lambda-Ausdrucks ändern.)
Example
Im folgenden Beispiel wird C3489 generiert. Die Variable n wird in der Erfassungsklausel eines lambda-Ausdrucks, dessen Standarderfassungsmodus der Modus nach Wert ist, nach Wert angezeigt:
// C3489a.cpp
int main()
{
int n = 5;
[=, n]() { return n; } (); // C3489
}
Im folgenden Beispiel werden vier mögliche Lösungen für den Fehler C3489 gezeigt:
// 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; } ();
}