<分区>
现在我们可以在我们的代码库中使用 C++11 lambda,我们正在努力制定应该如何定义和使用它们的一般原则。我意识到这肯定有主观因素,但我认为也可能有一些对社区有用的更通用的经验法则。
定义 lambda 的一般原则是什么?
- 您什么时候更喜欢通过引用
[&]
或值[=]
来捕获?性能影响是什么? - 您应该在什么时候更喜欢显式捕获变量,例如
[&foo]
? - 在什么情况下应该指定返回类型? (C++14 比 C++11 对推断返回类型有更好的支持)
- 在最好将 lambda 重写为函数之前,lambda 能有多复杂?
就个人而言,我目前的一般原则是“只要您需要一个简单的谓词或比较器,就使用 lambda”,但这可能意味着我错过了一些更强大的用例。