Notitie
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen u aan te melden of de directory te wijzigen.
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen de mappen te wijzigen.
'var' is niet toegestaan wanneer de standaardopnamemodus by-reference is
Opmerkingen
Wanneer u opgeeft dat de standaardopnamemodus voor een lambda-expressie by-reference is, kunt u een variabele niet doorgeven door te verwijzen naar de capture-component van die expressie.
Deze fout corrigeren
Geef de variabele niet expliciet door aan de capture-component of
Specificeer niet via referentie als de standaard opnamemodus, of
Stel 'by-value' in als de standaardcapturamodus of
Geef de variabele door via waarde aan de capture-clausule. (Dit kan het gedrag van de lambda-expressie wijzigen.)
Example
In het volgende voorbeeld wordt C3488 gegenereerd omdat er een verwijzing naar de variabele n wordt weergegeven in de capture-component van een lambda-expressie waarvan de standaardmodus by-reference is:
// C3488a.cpp
int main()
{
int n = 5;
[&, &n]() { return n; } (); // C3488
}
In het volgende voorbeeld ziet u vier mogelijke oplossingen voor 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; } ();
}