当前位置: 首页 > news >正文

一文读懂sizeof...运算符及其具体应用

sizeof... 运算符‌如大家所了解的sizeof... 运算符‌是C11 引入的一个‌一元运算符‌专门用于‌在模板参数包template parameter pack中获取参数的个数‌。它与普通的 sizeof 运算符不同后者用于获取类型或对象的内存字节数而 sizeof... 用于‌计算参数包中包含的参数数量‌。基于上一个例子我们必须得为终止条件专门写一个独立的终止函数。这在很多时候都是比较麻烦的那有没有什么方式能够避免呢sizeof...sizeof相比大家都熟悉可以用于获取对象大小。而sizeof...不是获取变参的总大小而是获取变参的数量多少。if constexprif constexpr可以通过在编译期间确定表达式的条件真值确定实际需要执行的代码块。将这两一结合我们可以获得如下代码#include iostream template typename Num, typename... Args int getSum(Num num, Args... args) { // 当形参包的长度为0时直接返回num if constexpr (0 sizeof...(Args)) { return num; } else { return num getSum(args...); } } int main() { int sum getSum(1, 2, 3); std::cout sum std::endl; }这样就把一个目标功能都集中在了一个函数体中与我们通常书写递归函数的写法非常类似。但这份代码也存在着缺点那就是无法应对空参的情况。
http://www.zskr.cn/news/1318360.html

相关文章:

  • OpenPLC Editor:打破工业自动化编程壁垒的免费开源解决方案
  • 告别轮询!用GD32F4xx的USART中断实现高效串口数据收发(实测对比耗时)
  • 3分钟掌握ncmdump:网易云音乐NCM文件终极解密方案
  • 三分钟搞定B站缓存视频:m4s转MP4的傻瓜式完整教程
  • 3步搞定Football Manager面部包管理:NewGAN-Manager完全指南
  • AWVS 部署实战:从零到一构建企业级Web漏洞扫描环境
  • STM32H7实战:告别Bootloader,用QSPI Flash和内部Flash混合运行程序(含MDK配置避坑)
  • RK3562开发板Android 13系统快速测试与功能验证指南
  • 浏览器安装路径的精准定位与自定义网址快捷方式的进阶创建
  • 安装CentOS系统
  • ZeroOmega:浏览器代理管理终极指南,快速切换网络环境的完整教程
  • 基于RK3576边缘计算盒的菜品识别系统:从模型优化到工程部署实战
  • 数学函数双曲线音频图表(y=1/x 双曲线)|图表代码示例
  • 基于二维码技术的设备管理系统实战 - 从架构设计到扫码盘点落地
  • 64 Nginx静态资源盗链的效果展示
  • LizzieYzy:围棋AI分析工具的三大突破,让你拥有职业棋手的复盘能力
  • 终极Windows桌面整理指南:用NoFences告别混乱,免费实现高效分区管理
  • RT-Thread SysTick深度优化:从微秒级精度到低功耗实战
  • 别再乱按了!示波器Autoset和Run/Stop的正确用法,看完这篇就够了
  • 从OJ题解到实战:自定义字符序下的多字符串比较策略
  • WeChatMsg:创新聊天记录管理工具,永久保存你的数字记忆
  • Chrome扩展开发进阶:利用Omnibox API打造你的专属命令行工具(含搜索建议实现)
  • 【音视频 | H.264】从NALU到图像:解码H.264码流的关键步骤与实战解析
  • 从SES价签到ESP32墨水屏驱动板:自制低成本电子价签全记录
  • 快速出圈秘诀:口腔门诊设计出圈策略
  • 双连通分量
  • 对比直接使用官方API通过聚合平台管理网站AI调用的体验
  • 如何正确使用括号提升中国科学技术大学学位论文排版质量
  • STC12C5A60S2单片机驱动DHT11和OLED,手把手教你做一个桌面温湿度计(附完整代码)
  • 一、Mysql8.0.34-从零部署到首次连接实战