variadic template模板参数可变化----C++学习之路

来源:互联网 发布:淘宝整机烈士墙2016 编辑:程序博客网 时间:2024/05/17 23:38

  1.什么叫做variadic template?

variadic可变的,连起来就是数量不定的模板参数。

  2.语法上怎么写?

直接用例子:

template<typename T,typename... TYpes>void print(const T& firstArg,const Types&... args){    cout<<firstArg<<endl;    print(args...);}
注意三个点不是省略,而是语法。将这个分为一个和一大块。

以这个例子,当我们调用的时候:

print(7.5,"hello",bitset<16>(377),42);
7.5就是firstArg。

然后又将后面的一大块传给自己,递归下去。下一次递归“hello”就是firstArg,得到的结果就是:

7.5hello0000000010111100142
当然,bitset是有重载<<这个符号。等到最后一个42的时候,就会分为一个和0个,当0个传进去就会失败

所以必须再写一个版本:

void print(){}
也就是到最后0个的时候,编译器会选择用这个,所以停止了。

  3. ...三点其实是一个所谓的pack(包)

用于template parameter 就是template parameter pack(模板参数包)

用于function template parameter types 就是function parameter pack(函数参数类型包)

用于function parameters就是function parameters pack(函数参数包)

  4.如果我们想知道这个包有多少个:

用sizeof...(args)这就直到那一包有多少个。
,


阅读全文
0 0