Lambda capture clause
-
Hi,
kann man nicht einfach [&] schreiben, anstatt die Variablen aufzulisten? Oder ist das weniger performant (compile/runtime?)?.In einer Klasse:
// link, context sind Pointer auto Failed = [this, link, context]() { Disconnect(link); link->Release(); delete context; };Einfacher wäre halt [&], und hätte in diesem Fall denselben Effekt.
-
Einfacher ist das schon, kannst du ja auch machen.
Ich denke nicht, dass das Einfluss auf die Performance hat, dennd er Compiler wird sich nur die Daten in den Lambda-Ausdruck holen, die dort auch gebraucht werden.Das Problem ist (nur), dass du auch aus versehen Daten ändern könntest, die du nicht ändern willst.
-
[&] würde alles per Referenz fangen, das halte ich aber für Unfug, weils eh schon Zeiger sind. Ich würde [=] machen, wenn ich schreibfaul wäre. Ich mache aber lieber [this, link, context], dann kommen keine Überraschungen, wenn ich mal an der Klasse was ändere.
Zusatzfrage, willste nicht nur [this] fangen und sind mit link und context nur this->link und this->context gemeint? Das wäre hübsch.
-
Okay, danke.
Ne, in dem Fall sind die Pointer auto.