在堆栈溢出问题中重新定义 C++11 中不允许的 lambda,为什么?,给出了一个不能编译的小程序:
int main() {
auto test = []{};
test = []{};
}
问题得到了回答,一切似乎都很好。然后约翰内斯·绍布( Johannes Schaub)做了一个有趣的观察:
如果你
+
在第一个 lambda 之前加上 a,它就会神奇地开始工作。
所以我很好奇:为什么以下工作?
int main() {
auto test = +[]{}; // Note the unary operator + before the lambda
test = []{};
}