【问题标题】:C++11: pass (lambda or other) function object by reference or value?C ++ 11:通过引用或值传递(lambda或其他)函数对象?
【发布时间】:2013-04-13 05:13:04
【问题描述】:

这最初是这个问题的一部分:

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

但我决定将其单独制作。

在什么情况下通过引用或值传递 lambda 或其他函数对象更好/更惯用?

【问题讨论】:

    标签: c++ c++11 reference lambda


    【解决方案1】:

    您对“lambda”使用与作为参数的任何对象相同的规则。

    如果函数的目的是为调用者修改对象,则函数应该使用非常量引用。如果函数只是使用对象而不更改它,则该函数应使用const&。如果要将对象复制/移动到其内部存储中,它应该按值传递。

    【讨论】:

    • 我记得在这个论坛上的一些评论中读到,按值传递函子是惯用的,因此这个问题。我想如果函子传递超出范围的危险,那么按值成语会更好。
    • 如果我通过非常量引用传递一个 lambda,我可以修改它。但是“修改 lambda”是什么意思?
    猜你喜欢
    • 1970-01-01
    • 2011-09-27
    • 2018-04-03
    • 2014-02-08
    • 1970-01-01
    相关资源
    最近更新 更多