gpt4 book ai didi

c++ - 是否可以在 lambda 中找到捕获变量的数量/类型?

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

在按值访问或按引用访问时,是否可以自动实现lambda捕获的变量个数?还有可能破译他们的类型吗?例如,假设这段代码:

int a = 47;
int b = 48;
long long c = 49;
auto f1 = [=](){ return a + b; };
auto f2 = [=](){ return a + b + c; };

如果像下面这样调用,是否可以有一个名为 count_args 的函数,它在一行中返回 2 并在下一行返回 3

std::cout << count_args( f1 ) << "\n" << count_args( f2 );

最佳答案

不,因为这个问题隐含地假设捕获的变量实际上是成员变量。然而,编译器被授予了更大的自由度。正如 Ajay 在评论中指出的那样,一个体面的优化器可以用提升的表达式替换成员,它也可以改变类型,使用非 C++ 类型,等等。因此,您可以捕获 struct color { char R,G,B } 而 lambda 实际上仅存储 .R.Gcount_args 现在是 2/3 吗?

关于c++ - 是否可以在 lambda 中找到捕获变量的数量/类型?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32196058/

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