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.


Log in to reply