int a = 3;
auto f = [a] (int a) { return a > a; }
问:捕获局部变量名a
并且lambda有区别方法吗?
我认为它在参数a
的范围内,独立于外部局部变量a
,想知道是否有类似指针的区别。
答案 0 :(得分:3)
当编译器处理lambda时,它所做的基本上是创建一个它实例化的特殊类。实际的lambda函数变为operator()
函数,捕获的变量成为此特殊类中的成员变量。
这意味着应用正常的范围规则,其中局部变量和参数隐藏成员变量。
因此,在您的情况下,a
是参数,而不是捕获的变量。