可变参数模板

  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)...};
}
相关推荐
进击的小头1 分钟前
第7篇:基于传递函数的PI控制器设计
python·算法
TracyCoder1232 分钟前
LeetCode Hot100(62/100)——62. 不同路径
算法·leetcode·职场和发展
jing-ya4 分钟前
day 50 图论part2
java·算法·深度优先·图论
仰泳的熊猫7 分钟前
题目2268:蓝桥杯2016年第七届真题-密码脱落
数据结构·c++·算法·蓝桥杯
我能坚持多久16 分钟前
【初阶数据结构09】——对堆用法的深入刨析
数据结构·算法
kaikaile199519 分钟前
基于PCNN和NSCT的图像融合MATLAB实现
开发语言·图像处理·算法·matlab
Zik----19 分钟前
cs研究生面试机试题(持续更新)
算法
山栀shanzhi28 分钟前
C++ 核心机制解析:#pragma once 与 extern 的具体职责与区别
开发语言·c++·面试
12315668029 分钟前
PAT 1017 A除以B
c语言·数据结构·算法·pat考试