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

空参包的特殊情况

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

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

int main() {
    getSum();
}

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

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

&& 空包的值为

空包的值为

空包的值为

小结

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

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

相关推荐
2zcode4 分钟前
基于MATLAB深度卷积特征的多曝光图像自适应融合系统设计与实现
开发语言·matlab·多曝光图像自适应融合系统
保持清醒54025 分钟前
类和对象上
c++
plainGeekDev26 分钟前
synchronized → Coroutines
android·java·kotlin
Lyra_Infra30 分钟前
故障排查报告:Spring boot连接 Nacos 异常及启动失败
java·spring boot
liguojun202539 分钟前
智慧文体旅系统选哪家?豆米跳跳十年技术沉淀支持源码交付
java·大数据·人工智能·物联网·1024程序员节
hold?fish:palm1 小时前
7 接雨水
开发语言·c++·leetcode
学习使得吾快乐1 小时前
时序数据库 TDengine 在设备监测中的实际落地:从传感器上报到实时看板
java·时序数据库·tdenginne
geats人山人海1 小时前
c# 第九章 record
开发语言·c#
早期的虫儿有鸟吃1 小时前
vue2--Vuex 模块化
开发语言·前端·javascript
程序员清风1 小时前
推荐几个我常听的AI播客!
java·后端·面试