可变参数模板:接受可变数目参数的模板函数或模板类。将可变数目的参数成为参数包,有模板参数包和函数参数包;
模板参数包:表示零个或多个模板参数
函数参数包:表示零个或多个函数参数
例如
template <typename T,typename... Args> //Args是模板参数包
void fun(const T &t,const Args &...args);//args是函数参数包
示例:
#include "mainwindow.h"
#include <iostream>
#include <QApplication>
using namespace std;
template <typename T>
void print_fun(const T &t) //负责终止递归并打印初始调用中的最后一个实参
{
std::cout<<t<<std::endl;
}
template <typename T,typename... Args>
void print_fun(const T &t,const Args &...args) //打印绑定到 t 的实参,并用来调用自身来打印函数参数包中的剩余值
{
cout<<t<<" ";
print_fun(args...);
}
int main(int argc, char *argv[])
{
QApplication a(argc, argv);
MainWindow w;
w.show();
print_fun("hello","world","!");
return a.exec();
}