您的位置:首页 > 编程语言 > C语言/C++

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

2017-11-12 23:37 405 查看
  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.5
hello
00000000101111001
42当然,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)这就直到那一包有多少个。

,
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: