可变参数模板

  1. sizeof...计算参数个数
cpp 复制代码
template<typename... Ts>
void magic(Ts... args) {
    std::cout << sizeof...(args) << std::endl;
}

2.递归模板函数

cpp 复制代码
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 中增加了变参模板展开的支持

cpp 复制代码
//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.初始化列表展开

cpp 复制代码
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)...};
}
相关推荐
BillKu3 分钟前
Vue3父子组件数据同步方法
前端·javascript·vue.js
努力学习的小廉3 分钟前
【C++】 —— 笔试刷题day_24
开发语言·c++
丶Darling.4 分钟前
26考研 | 王道 | 数据结构 | 第七章 查找
前端·数据结构·考研
明月清了个风5 分钟前
数据结构与算法学习笔记(Acwing提高课)----动态规划·数字三角形
笔记·学习·算法·动态规划
刃神太酷啦6 分钟前
堆和二叉树--数据结构初阶(3)(C/C++)
c语言·数据结构·c++·算法·leetcode·深度优先·宽度优先
●VON10 分钟前
杭电oj(1087、1203、1003)题解
算法·leetcode·职场和发展
七月丶25 分钟前
❌ 别再用接口文档开发了!我改用“Mock-First”后爽到飞起
前端·javascript·后端
用户jjbjjbk26 分钟前
QT多线程以及事件循环
c++·qt
良木林27 分钟前
240424 leetcode exercises II
c语言·数据结构·算法·leetcode
阳光_你好29 分钟前
医学图像(DICOM数据)读取及显示(横断面、冠状面、矢状面、3D显示)为什么用ITK+VTK,单独用ITK或者VTK能实一样功能吗?
c++