Попытка понять lambdas на С++, я не понимаю, что это:
int multiplier = 5;
auto timesFive = [multiplier](int a) { return a * multiplier; };
std::cout << timesFive(2) << '\n'; // Prints 10
multiplier = 15;
std::cout << timesFive(2) << '\n'; // Still prints 2*5 == 10 (???) - Should it be 30?
Когда программа вызывает timesFive()
второй раз, я ожидаю, что результат будет 30. Но почему результат Still prints 2*5 == 10
, а не prints 2*15 == 30
? Возможно, функция лямбда каким-то образом не может отслеживать значение multiplier
, даже если мы уже пытались ее захватить?
И каков способ получить желаемый результат?