gpt4 book ai didi

c++ - 每个 lambda 函数都是匿名类吗?

转载 作者:塔克拉玛干 更新时间:2023-11-03 01:14:00 24 4
gpt4 key购买 nike

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++ - 每个 lambda 函数都是匿名类吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28955131/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com