【发布时间】:2016-12-20 12:25:02
【问题描述】:
#include <iostream>
typedef std::function<bool(int)> set;
using namespace std;
set singletonSet(int a) {
return [&] (int x) { return (a == x); };
}
bool contains(set s, int test) {
return s(test);
}
int main() {
auto first = singletonSet(5);
auto r1 = contains(first, 10);
auto r2 = contains(first, 5);
cout << r1 << " " << r2 << endl;
return 0;
}
我希望这会打印 0 1 但结果是 1 1
这里是初学者 c++ labmda 程序员,如果这是一个基本错误,请提前道歉。
【问题讨论】:
-
[&]通过引用捕获a,它在return语句之后死亡
标签: c++ c++11 lambda functional-programming