可变参数模板

  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)...};
}
相关推荐
阿珊和她的猫11 分钟前
React 路由:构建单页面应用的导航系统
前端·react.js·状态模式
2501_9403152616 分钟前
航电oj:首字母变大写
开发语言·c++·算法
Amumu1213821 分钟前
Vue脚手架(二)
前端·javascript·vue.js
花间相见27 分钟前
【LangChain】—— Prompt、Model、Chain与多模型执行链
前端·langchain·prompt
lhxcc_fly32 分钟前
手撕简易版的智能指针
c++·智能指针实现
CodeByV37 分钟前
【算法题】多源BFS
算法
TracyCoder12340 分钟前
LeetCode Hot100(18/100)——160. 相交链表
算法·leetcode
浒畔居42 分钟前
泛型编程与STL设计思想
开发语言·c++·算法
Fcy6481 小时前
C++ 异常详解
开发语言·c++·异常
机器视觉知识推荐、就业指导1 小时前
Qt 和 C++,是不是应该叫 Q++ 了?
开发语言·c++·qt