SOドキュメントで説明したラムダ関数の呼び出しに関する質問があります。C++でのLambda関数
int multiplier = 5;
auto timesFive = [multiplier](int a) { return a * multiplier; };
std::cout << timesFive(2); // Prints 10
multiplier = 15;
std::cout << timesFive(2); // Still prints 2*5 == 10
なぜ2 * 15 = 30
が印刷されないのですか? 明らかに、乗数の値は変更されており、timesFive
への呼び出しが行われると、multiplier
という更新された値が選択されます。