【发布时间】:2017-10-18 21:01:17
【问题描述】:
我想知道 C++ 中 lambda 的捕获。 我知道 lambda 表达式只是某些仿函数类的“生成器”。 我想知道编译器如何区分捕获的“this”成员和生成的仿函数类的成员?
还有,第二个问题:
在下面的示例中a_ 来自捕获列表阴影A::a_。这种行为是否在标准中描述?我在任何地方都找不到答案。
class A {
int a_ = 0;
public:
void sth() {
auto l = [this, a_=1](int a) { a_ = a; };
l(1);
}
};
【问题讨论】:
-
这不会编译。
a_是不可变的,因为 lambda 未标记mutable -
@RichardHodges 我知道,这只是说明问题的示例