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) ; // 包中有两个参数

调用trest…
print (cout, i, s, 42)is , 42
print (cout, s, 42 )s42
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 模板和泛型编程)实例化

C++ Primer 5th笔记(chap 16 模板和泛型编程)可变参数模板

C++ Primer 5th笔记(chap 16 模板和泛型编程)模板实参