【问题标题】:C ++ lambda captures local variables like parameter names [duplicate]C ++ lambda捕获参数名称等局部变量
【发布时间】:2017-08-14 05:24:23
【问题描述】:
int a = 3;
auto f = [a] (int a) { return a > a; }

Q:捕获局部变量名a和lambda有区别方法吗?

我认为是a范围内的一个参数是独立于外部局部变量a的,想知道有没有类似这个指针的区别。

【问题讨论】:

    标签: c++ lambda


    【解决方案1】:

    当编译器处理一个 lambda 时,它所做的基本上是创建一个特殊的类来实例化。实际的 lambda 函数变成了operator() 函数,捕获的变量变成了这个特殊类的成员变量。

    这意味着应用正常的作用域规则,局部变量和参数隐藏成员变量。

    所以在您的情况下,a 是参数,而不是捕获的变量。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2020-02-13
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-04-14
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多