#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++ станд :: функция возвращает неожиданное значение
Начинающий C++ программист labmda здесь так жаль заранее, если это основная ошибка.
'[&]' захватывает по ссылке 'a', который умирает после' return' заявление –