什么时候不在正常功能上使用 lambda?
When to not use lambdas over normal functions?
我知道 lambda 是如何工作的,我在我的代码中几乎到处都使用 lambda,有没有我应该更喜欢使用普通函数而不是 lambda 的场景
When to not use lambdas over normal functions?
当函数可以在多个上下文中重复使用时,通常最好使用普通函数。
何时不使用 lambda:
当函数在头文件中声明并在 .cpp
文件中实现时。无法使用 lambda 执行此操作。
当函数是模板时,您希望能够手动指定模板参数。使用 lambas 执行此操作需要一个丑陋的语法:foo.operator()<...>(...)
.
何时使用 lambda:
当函数为 overloaded/templated,并且您想方便地将其作为参数传递给不同的函数时。
您想避免ADL。
除此之外,优先使用常规函数而不是 lambda 只是一种约定。
如果你想违背这个惯例,你应该准备好解释你的理由。
我知道 lambda 是如何工作的,我在我的代码中几乎到处都使用 lambda,有没有我应该更喜欢使用普通函数而不是 lambda 的场景
When to not use lambdas over normal functions?
当函数可以在多个上下文中重复使用时,通常最好使用普通函数。
何时不使用 lambda:
当函数在头文件中声明并在
.cpp
文件中实现时。无法使用 lambda 执行此操作。当函数是模板时,您希望能够手动指定模板参数。使用 lambas 执行此操作需要一个丑陋的语法:
foo.operator()<...>(...)
.
何时使用 lambda:
当函数为 overloaded/templated,并且您想方便地将其作为参数传递给不同的函数时。
您想避免ADL。
除此之外,优先使用常规函数而不是 lambda 只是一种约定。
如果你想违背这个惯例,你应该准备好解释你的理由。