Пустой пакет в свертке в C++
Пустой пакет не проходит через унарную свертку, поэтому в выражении задают начальное значение справа.
Бинарная правая форма (xs + ... + 0)
возвращает ноль, когда значений нет.
Запишем сумматор и проверим оба случая:
#include <iostream>
template<typename... Ts>
int total(Ts... xs) {
return (xs + ... + 0);
}
int main() {
std::cout << total(2, 3) << "\n";
std::cout << total() << "\n";
return 0;
}
Объявите template<typename... Ts> int product(Ts... xs)
как (xs * ... * 1).
Выведите результат для пустого вызова
и для множителей 2 и 5.