当前位置:嗨网首页>书籍在线阅读

31-可变参数模板

  
选择背景色: 黄橙 洋红 淡粉 水蓝 草绿 白色 选择字体: 宋体 黑体 微软雅黑 楷体 选择字体大小: 恢复默认

18.6 可变参数模板

可变参数模板(variadic template)让您能够创建这样的模板函数和模板类,即可接受可变数量的参数。这里介绍可变参数模板函数。例如,假设要编写一个函数,它可接受任意数量的参数,参数的类型只需是cout能够显示的即可,并将参数显示为用逗号分隔的列表。请看下面的代码:

int n = 14;
double x = 2.71828;
std::string mr = "Mr. String objects!";
show_list(n, x);
show_list(x*x, '!', 7, mr);

这里的目标是,定义show_list(),让上述代码能够通过编译并生成如下输出:

14, 2.71828
7.38905, !, 7, Mr. String objects!

要创建可变参数模板,需要理解几个要点:

  • 模板参数包(parameter pack);
  • 函数参数包;
  • 展开(unpack)参数包;
  • 递归。