C ++ 11: übergeben (Lambda oder andere) Funktion Objekt durch Referenz oder Wert?

8

Das war ursprünglich Teil dieser Frage:

Weitergabe von Lambda erklärt Verwenden von auto-keyword durch nicht-const Referenz als Argument für den std :: function-Parametertyp

aber ich habe beschlossen, es zu einem separaten zu machen.

Unter welchen Umständen ist es besser / idiomatischer, ein Lambda oder ein anderes Funktionsobjekt als Referenz oder Wert zu übergeben?

    
Jeet 13.04.2013, 05:13
quelle

1 Antwort

11

Sie verwenden für "lambda" die gleichen Regeln wie für beliebige -Objekte, die Sie als Parameter verwenden.

Eine Funktion sollte nicht-const 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 kopiert / verschiebt.

    
Nicol Bolas 13.04.2013, 05:39
quelle

Tags und Links