c++-可变参数模板函数

原创 2016年06月01日 20:30:02

有些时候我们需要处理不限定个数的参数,处理不同的数据类型,那么最好的解决办法就是可变参数模板,这是c++常用的,当然c语言中也有的。
代码如此

#include <iostream>
/*通用可变参数模板*/
//不加的错误:1>g:\visualstudio2013_projects\类型转换\函数可变参数通用模板\main.cpp(12) : error C2780 : “void showall(T, Args...)” : 应输入 2 个参数,却提供了 0 个
void showall()//空函数,接口
{

}
//使用情景:处理不限定个数的参数,处理不同类型的参数
template <typename T, typename...Args>
//对通用可变参数模板引用如下
//void showall(T &value, Args & ...args)
void showall(T value, Args... args)
{
    std::cout << value << std::endl;
    showall(args...);//继续传递参数,调用的是自己,是递归调用
}

int main()
{
    int num1 = 1;
    int num2 = 2;
    int num3 = 3;
    char c = 'A';
    showall(num1, num2, num3, c);
    std::cin.get();
}
版权声明:转载请注明出处

C++ - 可变参数函数模板(Variadic Function Template) 详解 及 代码

可变参数函数模板(Variadic Function Template) 详解 及 代码 本文地址: http://blog.csdn.net/caroline_wendy/article/det...
  • u012515223
  • u012515223
  • 2013年12月02日 17:19
  • 6268

编写可变参数函数模板

我们可以使用一个initializer_list来定义一个可接受可变数目实参的函数。但是,所有实参必须具有相同的类型(或它们的类型可以转换为同一个公共类型)。可变参数函数通常是递归的。第一步调用处理包...
  • tengyft
  • tengyft
  • 2015年04月28日 21:19
  • 704

使用C++11变长参数模板 处理任意长度、类型之参数实例

变长模板、变长参数是依靠C++11新引入的参数包的机制实现的。 一个简单的例子是std::tuple的声明: template class tuple; 这里的三个点“...”表示这个模板参数是...
  • yanxiangtianji
  • yanxiangtianji
  • 2014年03月11日 23:19
  • 6267

C++11可变参数函数模板

在Log时参数是类型和个数是不固定的,所以在做log函数时,很多烦恼,不过C++11给我们带来的希望 这个是今天刚读到的,加上自己的理解为字节写了一个logger类,也给大家瞧瞧啊,欢迎大虾拍板...
  • zhx6044
  • zhx6044
  • 2013年04月27日 13:34
  • 4674

利用可变模板参数实现log功能

在以前的博文中,写过类似的课题。使用的是下面这种方法。// 递归出口 template void logOld(const T& t) { std::cout ...
  • zhx6044
  • zhx6044
  • 2016年03月19日 17:10
  • 2191

可变参数模板与完美转发

可变参数模板可变参数模板(variadic template)是C++11新增的一项特性,使得模板参数可以任意化。...
  • Stranger_CJHan
  • Stranger_CJHan
  • 2017年04月09日 16:06
  • 269

C++调用LUA函数,可变参模板实现

代码: /// FUNCTION TEMPLATE: luax_vcall template inline void luax_vcall(const char* func, _Args...arg...
  • xyzzf
  • xyzzf
  • 2015年06月30日 10:19
  • 914

泛化之美--C++11可变模版参数的妙用

泛化之美--C++11可变模版参数的妙用 1概述 C++11的新特性--可变模版参数(variadic templates)是C++11新增的最强大的特性之一,它对参数进行了高度泛化,...
  • linuxheik
  • linuxheik
  • 2016年07月07日 17:19
  • 2931

C 可变长参数 VS C++11 可变长模板

有些时候,我们定义一个函数,可能这个函数需要支持可变长参数,也就是说调用者可以...
  • zj510
  • zj510
  • 2014年07月03日 13:50
  • 9404

让模板类支持可变模板参数(不定个数的参数)

原文:http://blog.csdn.net/bluedog/article/details/4715542现如今才正真发现c++模板的强大,模板的强大在于不需要使用RTTI机制可以传递参数的类型信...
  • wag2765
  • wag2765
  • 2016年01月25日 16:38
  • 576
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:c++-可变参数模板函数
举报原因:
原因补充:

(最多只允许输入30个字)