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 tillåts inte när standardfångstläget är som referens
Anmärkningar
När du anger att standardläget för avbildning för ett lambda-uttryck är som referens kan du inte skicka en variabel med referens till avbildningssatsen för uttrycket.
Så här åtgärdar du det här felet
Ange inte variabeln uttryckligen i capture-satsen, eller
Ange inte med referens som standard för fångstläget, eller
Ange eftervärde som standardläge för avbildning, eller
Skicka variabeln som värde till inkapslingsklausulen. (Detta kan ändra beteendet för lambda-uttrycket.)
Example
I följande exempel genereras C3488 eftersom en referens till variabeln n visas i avbildningssatsen för ett lambda-uttryck vars standardläge är som referens:
// C3488a.cpp
int main()
{
int n = 5;
[&, &n]() { return n; } (); // C3488
}
I följande exempel visas fyra möjliga lösningar på 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; } ();
}