【发布时间】:2016-03-08 11:33:47
【问题描述】:
之前有人问过类似的question,但我仍然很困惑。我相信 STL 完全按值传递,因为按引用传递可能会在多线程环境中产生后果。比如说,当两个或更多线程正在执行一个可变 lambda 时。当我只想调用 lambda 时,我目前使用通用引用:
template <typename F>
inline void invoke(F&& f)
{
f();
}
这可以绑定到任何函数对象,就像const& 一样,但是对于内联来说可能是个坏主意。通过副本传递的 lambda 是否更容易被编译器内联?我希望传递的 lambda 尽可能“内联”。
【问题讨论】:
-
什么是可变 lambda?
-
mutable - 允许body修改copy捕获的参数,并调用它们的非常量成员函数
-
哦,有一个关键字。忘记了。