После изучения лямбда в C++ 11, я написал это и путался с выходом.Смущенный выход лямбда в этом случае
auto f1 = []() {
int tmp = 10;
int *tmp_p = &tmp;
return [tmp_p] (int x) {
return *tmp_p + x;
};
}();
auto f2 = []() {
int tmp = 10;
return [&tmp] (int x) {
return tmp + x;
};
}();
cout << f1(5) << endl;
cout << f1(5) << endl;
cout << f2(5) << endl;
cout << f2(5) << endl;
Выход:
15
5772973
2686617
2686617
В чем причина этого?
Но они возвращают лямбда с параметрами и выполняются немедленно –
@ AdrianJałoszewski Извините, только что заметили –