Lambda: [=]
-
Inzwischen bin ich auf Seite 446 in dem Buch "Der C++ Programmierer" von Ulrich Breymann und dort schreibt er:
[=] Alle sichtbaren Variablen der Umgebung werden per Wert kopiert. Die Kopien sind const, also nicht veränderbar.
Warum kopiert? Was hat das für einen Vorteil gegenüber einer const Reference?
-
Wenn z.B. das Lambda laenger existiert als das referenzierte Objekte bekommst du (beim Verwenden des Lambdas) Undefined Behavior (UB).
-
Kopiert im Falle wo du eine Kopie brauchst.
-
Wichtig wird das, wenn du so ein ding an einen anderen Thread übergeben willst oder aus einer Funktion zurückgeben möchtest. Denn dann würde das Lambda-Objekt mit Referenz-Capture-Clause sich auf etwas beziehen, was es früher oder später gar nicht mehr geben wird.