一、介绍
在程序编写过程中,有的时候会希望一个函数参数列表不定,可以输入任意类型、任意个数的参数。C++11的新特性可以实现这个功能。
二、程序
1、关键功能说明
(1)初始化任意个数的列表,使用逗号语句实现将函数执行
(void)std::initializer_list<int> {(---, 0)...};
2、代码
#include <iostream>
using namespace std;
int fun(int n, int data) {
cout << "Num: " << n << " Type Int Data: " << data << endl;
return 0;
}
int fun(int n, double data) {
cout << "Num: " << n << " Type Double Data: " << data << endl;
return 0;
}
int fun(int n, string data) {
cout << "Num: " << n << " Type String Data: " << data << endl;
return 0;
}
template <typename... Arguments>
void TestFun(string strData, Arguments &&...args) {
cout << strData << " Begin" << endl;
int nCount = 1;
(void)std::initializer_list<int> {(fun(nCount++, std::forward<Arguments>(args)), 0)...};
cout << strData << " End" << endl;
}
int main() {
TestFun("Arguments Test", 2, 2.2, "abcd");
return 0;
}