template之变参模板学习

转自:https://www.cnblogs.com/qicosmos/p/4325949.html,讲的很好

1.介绍

C++11的新特性--可变模版参数(variadic templates)对参数进行了高度泛化,它能表示0到任意个数、任意类型的参数。 要用三个点来定义:

template <class... T>
void f(T... args); 

省略号的作用有两个:

  • 1.声明一个参数包T... args,这个参数包中可以包含0到任意个模板参数;
  • 2.在模板定义的右边,可以将参数包展开成一个一个独立的参数。

但无法直接获取参数包args中的每个参数的,只能通过展开参数包的方式来获取参数包中的每个参数,这是使用可变模版参数的一个主要特点,也是最大的难点,即如何展开可变模版参数

2.递归展开参数包

需要提供一个参数包展开的函数和一个递归终止函数,递归终止函数正是用来终止递归的。

上述链接中给了例子,还可以通过逗号表达式来展开参数。另外如果是变参模版类和变参模板函数展开参数包的方式还不一样。

好复杂,目前用不到,我先不看了。

 

posted @ 2024-05-17 23:34  lypbendlf  阅读(12)  评论(0编辑  收藏  举报