Карточка Middle Шаблоны и концепты обновлено

Fold-выражения

Вопрос

Как посчитать сумму всех аргументов variadic-шаблона без рекурсии?

Попробуйте сами

Ответьте про себя или вслух, потом откройте ответ и сверьтесь.

Показать ответ и разбор

Коротко

Fold-выражение C++17: template <class... Ts auto sum(Ts... xs) { return (xs + ... + 0); }.

Ответ

Fold-выражение C++17: template <class... Ts> auto sum(Ts... xs) { return (xs + ... + 0); }. Бинарная свёртка с начальным значением 0 корректна и для пустой пачки. Число аргументов даёт sizeof...(Ts).

Разбор

Fold-выражение C++17: template <class... Ts> auto sum(Ts... xs) { return (xs + ... + 0); }. Бинарная свёртка с начальным значением 0 корректна и для пустой пачки. Число аргументов даёт sizeof...(Ts).

Ответьте сами, а не прочитайте

В тренажёре вопрос попадёт в повторения и вернётся, когда начнёт забываться. Плюс билеты с зачётом: 20 вопросов, не больше 2 ошибок.