1.constexpr
作用:支持在编译器执行,用于泛型编程中的条件判断
之前做的做法:
// 只有一个模板参数时调用此模板
template<int N>
int sum()
{
return N;
}
// 模板参数 > 2 个时调用此模板
template <int N, int N2, int... Ns>
int sum()
{
return N + sum<N2, Ns...>();
}
// 调用
sum<1, 2, 3>(); // returns 6
--------------------------------
//将多个数累加并返回累加结果
template <int N, int... Ns>
auto sum()
{
if constexpr (0 == sizeof...(Ns))
return N;
else
return N + sum<Ns...>();
}
// 调用
sum<1, 2, 3>(); // returns 6
------------------------------------
更方便的做法是利用fold表达式:
template<typename ...Ns>
auto sum(Ns... ns) {
return (ns + ...);
}
sum(1, 2, 3); // returns 6
本文由 Ryan 创作,采用 知识共享署名4.0 国际许可协议进行许可
本站文章除注明转载/出处外,均为本站原创或翻译,转载前请务必署名
最后编辑时间为:
2020/05/08 17:11