Здравствуйте, T4r4sB, Вы писали:
TB>И по сути указатель на лямбду передаётся два раза — потому что вызов лямбды это вызов метода класса, а метод класса и так передаёт первым параметром указатель на экземпляр класса. То есть это как object.foo(object, 1, 2, 3) в вызове не-статичного метода. Ну не уродство?
В принципе,
вотАвтор: sergii.p
Дата: 01.02.22
нормальное решение в части стирания типа, которое отлично оптимизируется в релизе. Опиши полностью задачу которую ты решаешь, тогда можно будет что-то конкретно посоветовать. Рекомендуемый подход для рекурсии вызова такой:
using it = typename std::vector<int>::iterator;
std::function<int(it, it)> sum = [&sum](it begin, it end) {
return (begin != end) ? sum(begin + 1, end) + *begin : 0;
};