2013-04-13 4 views

Antwort

11

Sie verwenden die gleichen Regeln für "Lambda" s, die Sie für jedes Objekt, das Sie als Parameter nehmen.

Eine Funktion sollte eine nicht konstante Referenz verwenden, wenn die Funktion das Objekt für den Aufrufer ändern soll. Die Funktion sollte const& verwenden, wenn sie nur das Objekt verwendet, ohne es zu ändern. Und es sollte nach Wert übergeben werden, wenn es das Objekt in seinen internen Speicher kopieren/verschieben wird.

+3

Ich erinnere mich an einige Kommentare in diesem Forum zu lesen, dass es idiomatisch war, Funktoren nach Wert zu übergeben, und daher diese Frage. Ich vermute, wenn die Gefahr besteht, dass der Funktor überschritten wird und außerhalb des Geltungsbereichs liegt, dann ist ein Wert-Idiom besser. – Jeet

+1

Wenn ich ein Lambda durch nicht-const Referenz übergeben, kann ich es ändern. Aber was bedeutet "ein Lambda modifizieren"? – Ignorant

Verwandte Themen