Warum werden Lambda-Argumente in C ++ 11 durch den Wert read-only übergeben?

8

Wenn eine Funktion ein Argument nach Wert nimmt, kann es normalerweise geändert werden. Bei Lambdas scheint dies jedoch nicht der Fall zu sein. Warum?

%Vor%     
dragonroot 31.12.2014, 00:32
quelle

1 Antwort

4

Herb Sutter beantwortet die Frage hier wie folgt:

  

Betrachten Sie dieses Strohmann-Beispiel, in dem der Programmierer ein lokales erfasst   Variable nach Wert und versucht, den erfassten Wert zu ändern (a   Elementvariable des Lambda-Objekts):

%Vor%
  

Diese Funktion scheint aus einem Anliegen des Benutzers heraus entstanden zu sein   vielleicht nicht, dass er eine Kopie bekommen hat, und insbesondere seit Lambda   kopierbar sind, könnte er eine andere Lambda-Kopie ändern.

Hinweis: Dies ist ein Vorschlag, um die Funktion zu ändern.

    
Alper 31.12.2014 01:41
quelle

Tags und Links