最佳答案
在Stack Overflow问题在c++ 11中不允许重新定义lambdas,为什么?< / >中,给出了一个不能编译的小程序:
int main() {
auto test = []{};
test = []{};
}
问题得到了回答,一切似乎都很好。然后是约翰内斯他并生成一个有趣的观察:
如果你把
+
放在第一个lambda之前,它就神奇地开始工作了。
所以我很好奇:为什么下面的方法有效?
int main() {
auto test = +[]{}; // Note the unary operator + before the lambda
test = []{};
}