#include <iostream>
#include <functional>
using namespace std;
int main() {
std::function<int()> functions_to_call[5];
int i=0;
for(i=0; i<5; ++i)
functions_to_call[i] = [&i](){ return i; };
std::cout << "f(i) with i:" << std::endl;
for(i=0; i<5; ++i)
std::cout << functions_to_call[i]() << std::endl;
std::cout << "f(i) with j:" << std::endl;
for(int j=0; j<5; ++j)
std::cout << functions_to_call[j]() << std::endl;
return 0;
}
I2luY2x1ZGUgPGlvc3RyZWFtPgojaW5jbHVkZSA8ZnVuY3Rpb25hbD4KdXNpbmcgbmFtZXNwYWNlIHN0ZDsKCmludCBtYWluKCkgewoJc3RkOjpmdW5jdGlvbjxpbnQoKT4gZnVuY3Rpb25zX3RvX2NhbGxbNV07CgkKCWludCBpPTA7CgkKCWZvcihpPTA7IGk8NTsgKytpKQoJCWZ1bmN0aW9uc190b19jYWxsW2ldID0gWyZpXSgpeyByZXR1cm4gaTsgfTsKCglzdGQ6OmNvdXQgPDwgImYoaSkgd2l0aCBpOiIgPDwgc3RkOjplbmRsOwoJZm9yKGk9MDsgaTw1OyArK2kpCgkJc3RkOjpjb3V0IDw8IGZ1bmN0aW9uc190b19jYWxsW2ldKCkgPDwgc3RkOjplbmRsOwoJCglzdGQ6OmNvdXQgPDwgImYoaSkgd2l0aCBqOiIgPDwgc3RkOjplbmRsOwoJZm9yKGludCBqPTA7IGo8NTsgKytqKQoJCXN0ZDo6Y291dCA8PCBmdW5jdGlvbnNfdG9fY2FsbFtqXSgpIDw8IHN0ZDo6ZW5kbDsKCXJldHVybiAwOwp9