我目前正在学习通用 lambda 函数,并且我很好奇它们之间的差异:
[](auto x){};
和[]<typename T>(T x){};
它们都做同样的事情,但一个比另一个更快?使用这两种语法有什么意义。
最佳答案
虽然两者在功能上是等价的,但它们都是C++14和C++20的特性,即泛型lambda和泛型lambda的模板语法,这意味着后者是>仅在 C++20 中格式良好。
与可以接受任何类型的auto
相比,后者可以使lambda接受特定类型,例如:
[]<class T>(const std::vector<T>& x){};
此外,它还使得 lambda 能够以更自然的形式转发参数:
[]<class... Args>(Args&&... args) {
return f(std::forward<Args>(args)...);
};
您可以通过原论文P0428获得更多详细信息.
关于c++ - 通用 Lambda 之间的差异,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/70048200/