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

空参包的特殊情况

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

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

int main() {
    getSum();
}

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

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

&& 空包的值为

空包的值为

空包的值为

小结

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

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

相关推荐
AI你一生一世2 小时前
不止于时序存储:DolphinDB 如何成为 AI 时代的工业智能底座
java·人工智能·struts·时序数据库·工业智能·dolphindb·ai基础设施
布莱克6052 小时前
C/C++ 中变量的声明与定义:区别、联系与常见误区
c语言·开发语言·c++·声明·定义
云-缩影2 小时前
拆解 AI 图像生成应用的后端架构:ECS、OSS 和大模型 API 怎么配合
java·spring boot·后端
LabVIEW开发2 小时前
LabVIEW 局部变量为何引发竞争条件?四种同步机制
开发语言·labview
瑞克-桑切斯3 小时前
7、MySQL 慢查询排查与优化实战指南
java·服务器·数据库
benchmark_cc3 小时前
A 股、港股、美股如何建立统一的标的主数据格式?
开发语言·python·数据分析·pandas·量化交易·股票数据·quantdash
Zenova EdgeOS4 小时前
Go 工业边缘错误处理实战:用 errors 构建可追溯错误链
开发语言·数据库·golang
取名真是4 小时前
Python 算法知识点从基础到进阶
开发语言·python·算法
FRing035 小时前
vue2干货总结3(computed计算属性、watch监听器)
开发语言·前端·vue.js·vue2
Fatbobman(东坡肘子)6 小时前
快速消失的硬盘容量 -- 肘子的 Swift 周报 #160
开发语言·人工智能·redis·ios·swiftui·iphone·swift