#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++的std ::函数返回意外的值
初学C++程序员labmda这里提前很抱歉,如果这是一个基本的错误。
''[&]'通过引用'a'获取,它在'return'语句后死亡 –