lambda のキャプチャで変数を保持
そういえば、こういう事ができるのかーと思いつつ。
[ソース]
#include <functional> #include <iostream> std::function<int(int)> make_sum(){ int sum = 0; return [=](int n) mutable -> int{ sum += n; return sum; }; } int main(){ auto sum = make_sum(); std::cout << sum(1) << std::endl; std::cout << sum(2) << std::endl; std::cout << sum(3) << std::endl; std::cout << sum(4) << std::endl; std::cout << sum(5) << std::endl; return 0; }
[出力]
1 3 6 10 15
何か面白いことに使えないかな。