有人了解使用 auto 声明 lambda 变量的各种方法的优缺点吗?
例如:
auto Val = [] { }; // #1
const auto &LVRef = [] { }; // #2
auto &&RVRef = [] { }; // #3
有人能想出一个令人信服的理由来让自己不总是选择#1吗?
我想对于模板函数,声明可调用参数的首选方法是使用通用引用?
template<class F> void foo(F&& f) { f(); }
或者大多数指南更喜欢将其声明为非引用参数?
template<class F> void foo(F f) { f(); }
谢谢!
最佳答案
Can anyone think of a compelling reason to not always prefer #1?
没有。 #1 更简单,并且与其他选项相比没有性能损失。
采用仿函数的算法通常只是按值获取它们,但如果您想保证不会因某种原因复制仿函数,则使用通用引用是合理的。如果您编写的内容只是转发仿函数,那么请使用通用引用。
关于c++ - 在 C++ 中使用 auto 声明 lambda 变量的首选方法是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22918762/