vector<int> v(10); std::generate(v.begin(), v.end(), [i=0]() mutable { return i++; });
Can anyone explain why this works?