C++11: pass (lambda or other) function object by r

2019-01-26 08:48发布

问题:

This was originally part of this question:

Passing lambda declared using auto-keyword by non-const reference as argument to std::function parameter type

but I decided to make it a separate one.

In what circumstances is it better/more idiomatic to pass a lambda or other function object by reference or value?

回答1:

You use the same rules for "lambda"s that you would for any object that you take as a parameter.

A function should use non-const reference if the intent of the function is to modify the object for the caller. The function should use const& if it is just using the object without changing it. And it should pass by value if it is going to copy/move the object into its internal storage.