C ++ 11: passar (lambda ou outro) objeto de função por referência ou valor?

Esta foi originalmente parte desta questão:

Passando lambda declarado usando a palavra-chave automática por referência não-const como argumento para o tipo de parâmetro std :: function

mas eu decidi fazer um separado.

Em que circunstâncias é melhor / mais idiomático passar um objeto lambda ou outro objeto de função por referência ou valor?

questionAnswers(1)

yourAnswerToTheQuestion