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

可变参数模板

1. sizeof...计算参数个数

template<typename... Ts>
void magic(Ts... args) {std::cout << sizeof...(args) << std::endl;
}

2.递归模板函数

template<typename T>
void printf1(T value) {std::cout << value << std::endl;
}template<typename T, typename... Ts>
void printf1(T value, Ts... args) {std::cout <<"剩余参数:" <<sizeof...(args)<< "," << value << std::endl;printf1(args...);
}int main() {printf1(1, 2, "123", 1.1);return 0;
}

3.C++17 中增加了变参模板展开的支持

//C++17 中增加了变参模板展开的支持
template<typename T0, typename... T>
void printf2(T0 t0, T... t) {std::cout << t0 << std::endl;if constexpr (sizeof...(t) > 0) printf2(t...);
}

4.初始化列表展开

template<typename T, typename... Ts>
auto printf3(T value, Ts... args) {std::cout << value << std::endl;(void) std::initializer_list<T>{([&args] {std::cout << args << std::endl;}(), value)...};
}

http://www.lryc.cn/news/220415.html

相关文章:

  • 坐公交:内外向乘客依序选座(python字典、字符串、元组)
  • 十年老程序员分享13个最常用的Python深度学习库和介绍,赶紧收藏码住!
  • 【pytorch源码分析--torch执行流程与编译原理】
  • 编辑器报警处理
  • Python库学习(十二):数据分析Pandas[下篇]
  • 工具: MarkDown学习
  • JS逆向爬虫---请求参数加密②【某麦数据analysis参数加密】
  • 基于APM(PIX)飞控和missionplanner制作遥控无人车-从零搭建自主pix无人车无人坦克
  • Vue3的手脚架使用和组件父子间通信-插槽(Options API)学习笔记
  • 第九章软件管理
  • Web渗透编程语言基础
  • Vue-router 路由的基本使用
  • 如何在CPU上进行高效大语言模型推理
  • 简简单单入门Makefile
  • New Maven Project
  • IDEA中如何移除未使用的import
  • 第18章_MySQL8新特性之CTE(公用表表达式)
  • MySQL的备份恢复
  • 【JavaEE】JVM 剖析
  • 算法题:203. 移除链表元素(递归法、设置虚拟头节点法等3种方法)Java实现创建链表与解析链表
  • ubuntu18.04 多版本opencv配置记录
  • Spring Security—OAuth 2.0 资源服务器的多租户
  • VB.NET—窗体引起的乌龙事件
  • 批量新增报错PSQLException: PreparedStatement can have at most 65,535 parameters.
  • 数仓分层能减少重复计算,为啥能减少?如何减少?这篇文章包懂!
  • 【Linux】基础IO之文件操作(文件fd)——针对被打开的文件
  • 什么是超算数据中心
  • 阿里云服务器省钱购买和使用方法(图文详解)
  • Apache Flink 1.12.0 on Yarn(3.1.1) 所遇到的問題
  • pandas - 数据分组统计