可变参数模板

  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)...};
}
相关推荐
1024小神几秒前
tauri程序使用github action发布linux中arm架构
前端·javascript
ahhdfjfdf2 分钟前
最全的`Map` 和 `WeakMap`的区别
前端
槐月初叁3 分钟前
多模态推荐系统指标总结
算法
JYeontu7 分钟前
实现一个带@功能的输入框组件
前端·javascript·vue.js
迪小莫学AI20 分钟前
LeetCode 2588: 统计美丽子数组数目
算法·leetcode·职场和发展
一颗奇趣蛋23 分钟前
vue-router的query和params的区别(附实际用法)
前端·vue.js
昂子的博客27 分钟前
热门面试题第十天|Leetcode150. 逆波兰表达式求值 239. 滑动窗口最大值 347.前 K 个高频元素
算法
孤城28628 分钟前
MAC电脑常用操作
前端·macos·快捷键·新手·电脑使用
木亦Sam29 分钟前
Vue DevTools逆向工程:自己实现一个组件热更新调试器
前端
酷酷的阿云29 分钟前
动画与过渡效果:UnoCSS内置动画库的实战应用
前端·css·typescript