Я хотел написать обобщенную функцию суммы, как следующий один, но не в синтаксисе шаблона, но в синтаксисе лямбда:Как рассчитать сумму с использованием вариабельной общей лямбды в C++?
template<typename T>
auto Sum(T lastSummand)
{
return lastSummand;
}
template<typename T, typename... Ts>
auto Sum(T firstSummand, Ts... restSummands)
{
return firstSummand + Sum(restSummands...);
}
Поскольку общие лямбды сопоставляются с шаблонами должно быть возможно сделать что-то вроде:
auto sum = [](auto firstSummand, auto... restSummands) { ... };
Но я не могу понять, как сделать рекурсию с помощью лямбда. Поиск в этом и других местах не привел многого.
Это не будет работать по той простой причине, что вам нужно специализация для покрытия конечного случая. Вам нужно как минимум два лямбда. –
Мне не нравится, когда C++ собирается в эти дни. –
@Sam Varshavichik: Как бы вы это сделали, используя две лямбды? –