Вы можете использовать лямбда-генерирующую функцию (обновлено с исправлением, предложенным Nawaz):
#include <vector>
#include <iostream>
int main() {
auto lambda_gen = [] (int i) {return [i](int x){ return i*x;};} ;
using my_lambda = decltype(lambda_gen(1));
std::vector<my_lambda> vec;
for(int i = 0; i < 10; i++) vec.push_back(lambda_gen(i));
int i = 0;
for (auto& lambda : vec){
std::cout << lambda(i) << std::endl;
i++;
}
}
Но я думаю, что на этом этапе вы создали собственный класс.В противном случае, если лямбды имеют совершенно разные caputres / args и т. Д., Вам, вероятно, придется использовать кортеж.