Variadic Templates 的引入,消去了烦冗的模板特化。 一个例子:
#include
这里需要注意的有两点:
- double do_sum() 这个函数必须在变长模板函数 double do_sum( T&& t, Args&& ... args ) 之前声明
- 变长模板函数实现中必须使用另外一个函数递归实现
- 模板上用的是 template< typename... Args>
- 函数参数中用的是 double do_sum(Arg ... arg)
- 函数体中用的是 do_sum(arg...)
如果需要知道到底传入了多少个参数可以这样来
template
variadic template 基本使用到这里就差不多了,下边的内容略略而过即可
再次注意这个 ...,来个稍微有点复杂的
template
再来一个多继承 template
整数也是可以放在 variadic template 上的 template
缺省template参数也是可以的,比如 template
还有 template template 的这种 template
也特别注意 Y 和 X 无论哪个都不能通过。这是因为在 template 中,模板类型顺序是不可以搞错的,比如: template
于是同样就有 template
更详细的有 template
注意这种特化 template
还有多个 variadic template 嵌套着用的 template
再举一个完整的例子: template
最新评论