C++ Primer 5th笔记(chap 16 模板和泛型编程)可变参数模板举例
Posted thefist11
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了C++ Primer 5th笔记(chap 16 模板和泛型编程)可变参数模板举例相关的知识,希望对你有一定的参考价值。
//用来终止递归并打印最后一个元素的函数
//此函数必须在可变参数版本的 print 定义之前声明
template<typename T> ostream Sprint (ostream &os, const T &t)
{
return os « t; / / 包中最后一个元素之后不打印分隔符
}
// 包中除了最后一个元素之外的其他元素都会调用这个版本的 print
template<typename T, typename...Args> ostream &print(ostream &os, const T &t, const Args &... rest)
{
os « t « ", ";//打印第一个实参
return print (os, rest...);//递归调用,打印其他实参
}
eg. print (cout, i, s, 42) ; // 包中有两个参数
调用 | t | rest… |
---|---|---|
print (cout, i, s, 42) | i | s , 42 |
print (cout, s, 42 ) | s | 42 |
print (cout, 42 ) 调用非可变参数版本的print |
warnning: 当定义可变参数版本的 print 时, 非可变参数版本的声明必须在作用域中。否则, 可变参数版本会无限递归。
以上是关于C++ Primer 5th笔记(chap 16 模板和泛型编程)可变参数模板举例的主要内容,如果未能解决你的问题,请参考以下文章
C++ Primer 5th笔记(chap 16 模板和泛型编程)std::move
C++ Primer 5th笔记(chap 16 模板和泛型编程)模板特例化
C++ Primer 5th笔记(chap 16 模板和泛型编程)类模板特例化
C++ Primer 5th笔记(chap 16 模板和泛型编程)实例化