Я хотел бы написать функцию суммы с переменным номером аргумента с условием, что он должен игнорировать аргументы, которые не std::is_arithmetic
Я выяснил рекурсивную версию, которая работает
auto old_sum(){
return 0;
}
template<typename T1, typename... T>
auto old_sum(T1 s, T... ts){
if constexpr(std::is_arithmetic_v<T1>)
return s + old_sum(ts...);
else
return old_sum(ts...);
}
Мне интересно, могу ли я использовать if constexpr
в контексте выражения сгиба, чтобы следующий код рассматривал только арифметические типы из пакета аргументов:
template<typename... T>
auto fold_sum(T... s){
return (... + s);
}