可变参数模板

  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)...};
}
相关推荐
fqbqrr7 分钟前
2607C++,soui与安卓
c++·soui
前端小李子23 分钟前
前端环境变量裸奔?我用 EnvShield 给它穿了件防弹衣
前端
youtootech23 分钟前
HarmonyOS《柚兔学伴》项目实战25-我的页面、Web 嵌入与项目总结
前端·华为·harmonyos
小林ixn1 小时前
从零到一理解 React 父子组件通信:手写一个 Todo 应用带你彻底搞懂单向数据流
前端·javascript·react.js
醇氧2 小时前
CountDownLatch / CyclicBarrier / Semaphore 面试高频问答清单
前端·面试·职场和发展
fqbqrr4 小时前
2607C++,使用微软detours勾挂工具
c++
qetfw4 小时前
MXU:Tauri 2 + React 的 MaaFramework 跨平台 GUI 源码
前端·python·react.js·前端框架·开源项目·效率工具
甲维斯4 小时前
我要开始吹牛逼了!Kimi K3 “宇宙无敌”!
前端·人工智能
a1117764 小时前
微光小屋-前端养成小游戏 开源项目
前端