C++变参模板之空参包的特殊情况

空参包的特殊情况

回到前面我们需要传入空参时该怎么处理?很简单,我们直接用二元折叠表达式就是设定一个初值即可。

复制代码
template <typename... Args>
auto getSum(Args... args) {
    return (args + ... + 0);
}

int main() {
    getSum();
}

那么,是所有一元折叠表达式都不可以传入空参吗?

并非如此,标准规定只有 && || ,这三个运算符是合法操作,并做出了如下规定:

&& 空包的值为

空包的值为

空包的值为

小结

变参模板的出现,极大的提高了编码的编码的便捷性。并对于一些历史遗留问题,如:变参宏难以编写和调试,一些旧库的参数个数限制等等问题,将不复存在。

可能一些朋友对模板元编程并不感兴趣,但是我们目前很多常用的库和特性都依赖于变参模板的技术,如: 等等。相信阅读完本文后,再去查看这些库的源码时能更加如鱼得水。

相关推荐
爱炸薯条的小朋友8 小时前
C#由窗体原子表溢出造成的软件闪退,根本原因补充
开发语言·c#·wpf
书语时8 小时前
看了 Comparator 源码,我重写了所有业务排序逻辑
java
蝈理塘(/_\)大怨种9 小时前
c++ 入门基础
开发语言·c++
likerhood9 小时前
Java final 关键字:从“不能改”到“安全发布”的深入理解
java·windows·安全
糖果店的幽灵9 小时前
LangChain 基于 Python 的技术- agent模块使用总结
开发语言·python·langchain
weixin_386468969 小时前
openharmony 6.0编译rk3568过程记录
c语言·c++·git·python·vim·harmonyos·openharmony
雪度娃娃9 小时前
转向现代C++——优先选用别名声明,而非 typedef
开发语言·c++
沐知全栈开发9 小时前
PHP While 循环
开发语言