【发布时间】:2018-12-14 17:18:39
【问题描述】:
我想写一个参数数量可变的求和函数,条件是它应该忽略不是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);
}
【问题讨论】:
标签: c++ c++17 variadic-templates template-meta-programming fold-expression