Заинтересовал такой теоретический вопрос - а как объявить массив лямбд? И можно ли это сделать в принципе? Например, объявляем массив, потом в цикле заполняем его лямбдами, например, с захватом разных параметров, или еще как... Или, скажем, vector<...> - как его заполнить лямбдами? Откровенно говоря, никогда не вдавался в такие детали, auto хватало с головой...
Ответ Можно воспользоваться шаблоном std::function. Но все лямбды должны быть с одинаковой сигнатурой. std::vector> lambdas lambdas.push_back([](){ return 1 }) lambdas.push_back([](){ return 2 }) /* ... */ Если самому сигнатуру писать лениво, то можно заставить компилятор подставлять её автоматически: auto lambda1 = [](){ return 1 } std::vector lambdas lambdas.push_back(lambda1 ) lambdas.push_back([](){ return 2 }) Поскольку захват переменных не оказывает влияния на сигнатуру лямбды, то можно заполнить массив вроде бы совершенно разными лямбдами: int i0, i1 std::vector> lambdas lambdas.push_back([](){ return -1 }) lambdas.push_back([=](){ return i0 + i1 }) lambdas.push_back([i0](){ return i0 }) lambdas.push_back([&i0](){ return i0++ }) lambdas.push_back([&](){ return i0++ + i1++ }) lambdas.push_back([&i0,i1](){ return i0++ + i1 }) /* и т.д. */