Здравствуйте, T4r4sB, Вы писали:
TB>Как известно, лямбда это сахарок над объектов, у которого перегружен оператор ().
TB>Но как получить ссылку на этот объект внутри этого оператора? Бывает полезно, в том числе для рекурсивного вызова.
Может быть что-то такое:
auto sum = [](auto& func, auto begin, auto end)->int {
return (begin != end) ? func(func, begin + 1, end) + *begin : 0;
};
std::vector<int> v{ 1, 2, 3 };
std::cout << sum(sum, v.begin(), v.end());
Правда уродский синтаксис вызова, но там уже всё уродское, на мой взгляд