Not
Åtkomst till den här sidan kräver auktorisering. Du kan prova att logga in eller ändra kataloger.
Åtkomst till den här sidan kräver auktorisering. Du kan prova att ändra kataloger.
"var" krävs när standardläget för avbildning är per värde
Anmärkningar
När du anger att standardfångstläget för ett lambda-uttryck är värdebaserat kan du inte skicka en variabel med värde till fångstklassen för det uttrycket.
Så här åtgärdar du det här felet
Skicka inte variabeln explicit till capture-klausulen, eller
Ange inte eftervärde som standardläge för avbildning, eller
Ange referens som standard upptagningsläge, eller
Skicka variabeln som referens till infångningsklausulen. (Detta kan ändra beteendet för lambda-uttrycket.)
Example
Följande exempel genererar C3489-variabeln n förekommer genom värde i infångningsklausulen för ett lambda-uttryck vars standardinställning är genom värde.
// C3489a.cpp
int main()
{
int n = 5;
[=, n]() { return n; } (); // C3489
}
I följande exempel visas fyra möjliga lösningar på 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; } ();
}