每个 lambda 函数都是匿名类吗?
Is every lambda function an anonymous class?
auto a = [](){};
auto b = [](){};
vector<decltype(a)> v;
v.push_back(a); //ok
v.push_back(b); //compiler error
A 和 B 有不同的类型。
我想知道每个lambda函数是否真的是一种匿名类,每当我们创建一个lambda函数时,我们都会创建一个具有随机名称的新类,该名称仅对编译器可见?
是的,每个 lambda 都引入了自己独特的类型。
现在,同一个 lambda 可以通过几种方式有多个与其关联的闭包(lambda 实例)。 C++14 返回型扣除是最简单的:
auto nothing() {
return []{};
}
将始终返回相同的类型,但不同的实例。 通过复制 lambda 闭包,或者通过将类型推断上下文中的 lambda 传递给模板函数并存储它,也可以完成类似的事情。
相关文章:
- C++Boost Asio Pool线程,带有lambda函数和传递引用变量
- 如何建立使用模板函数的lambda函数的尾部返回类型
- 我可以将调用类的"this"传递给 lambda 函数吗?
- 两组使用lambda函数的大括号
- 尝试将lambda函数放在队列中时出现一般分配器错误(可能是与unique_ptr有关的错误)
- 我可以在这里替换什么,因为我不能在 C# 中使用隐式变量的 lambda 函数?
- 为什么我不能在 constexpr lambda 函数中使用 std::tuple
- C++:Lambda 函数指针转换的用例是什么?
- 将 lambda 函数作为参数传递C++
- 如何将 lambda 函数作为参数发送到另一个函数
- 传递 lambda 函数的权衡是什么?
- 如何使用类模拟 C++11 中的 lambda 函数和闭包?
- 不是 lambda 函数中的常量表达式
- 如何使用可变参数数重载 lambda 函数?
- 如何通过指针传递lambda函数?
- 使用带有 lambda 函数指针的模板
- openmp c++ 中并行块内 lambda 函数的奇怪行为
- C++ 中 Lambda 函数中的溢出
- 将数组传递到 lambda 函数中
- lambda 函数未显示正确的结果