C ++ 11: passer l’object fonction (lambda ou autre) par référence ou valeur?

Cela faisait partie à l’origine de cette question:

Passer lambda déclaré en utilisant mot-clé auto par référence non-const comme argument du type de paramètre std :: function

mais j’ai décidé d’en faire un autre.

Dans quelles circonstances est-il préférable / plus idiomatique de transmettre un object fonction lambda ou un autre object fonction par référence ou par valeur?

Vous utilisez les mêmes règles pour les “lambda” que pour tout object que vous prenez en paramètre.

Une fonction doit utiliser une référence non-const si son objective est de modifier l’object pour l’appelant. La fonction doit utiliser const& si elle utilise simplement l’object sans le modifier. Et il devrait passer par valeur s’il va copier / déplacer l’object dans sa mémoire interne.