Ich habe ein Programm wie folgt:C++ Lambda Kopie Wert in Capture-Liste
int main()
{
int val = 4;
auto add = [val](int a)->int{
val += 2;
return a+val;
};
cout << add(3) << endl;
cout << val << endl;
return 0;
}
Es gibt einen Übersetzungsfehler in Xcode: Kann nicht auf eine Variable durch Kopie in einem nicht-veränderbaren Lambda erfaßt zuweisen.
Meine Frage ist: Wenn wir die Kopie verwenden (mit "=" oder Wertname), kann diesem Wert kein neuer Wert zugewiesen oder geändert werden?
mögliche Duplikate von [Warum benötigt das Lambda von C++ 0x standardmäßig ein "veränderbares" Schlüsselwort für Capture-by-Value?] (Http://stackoverflow.com/questions/5501959/why-does-c0xs-lambda -require-mutable-keyword-for-capture-by-value-by-defau – AndyG