Variadic Templates 数量不定的模板参数
使用:
void print()
template <typename T, typename… Types>
void print(const T& firstArg, const Types&… args){
cout << fisrtArg<<endl;
print(args);
}
由上可以看到,任意参数,任意类型。
用于递归。
由于最后肯定会递归到参数都结束,因此需要增加参数为空的函数,即print()
比如可以调用print(7.5, “hello”, bitset<16>(377),42);
举例:
//method.h
template<typename T> void swap(T& t1, T& t2);
//method.cpp
template<typename T> void swap(T& t1, T& t2) {
T tmpT;
tmpT = t1;
t1 = t2;
t2 = tmpT;
}
调用:
//main.cpp
#include <stdio.h>
#include "method.h"
int main() {
//模板方法
int num1 = 1, num2 = 2;
swap<int>(num1, num2);
printf("num1:%d, num2:%d\n", num1, num2);
return 0;
}