C++ 获取可变模板参数类型
2017-05-18 22:34
204 查看
本文以函数模板为例进行说明,类模板可以添加相应方法实现。
含有可变模板参数的函数模板如下所示。
4000
调用Func函数
含有可变模板参数的函数模板如下所示。
template <typename... Args> void Func(Args&&... args) { }我们知道可变参数的类型是由编译器根据传入函数的实参推导出来的,若我们需要获取可变参数的类型,可以使用如下函数模板。
template <typename... Args> void PrintArgs(const char *desc, Args&&... args) { int argn = sizeof...(Args); const char *argc[] = { typeid(Args).name()... }; cout << desc << " [ size : " << argn << " ] "; for (int i = 0; i < argn; i++) { cout << " [ " << argc[i] << " ] "; } cout << endl; }参数desc为描述信息,args为可变模板参数,可以配合完美转发来保留传入参数的左值引用和右值引用特性。可以用下面代码来使用此函数。
PrintArgs("Template Function Args", std::forward<Args>(args)...);
4000
调用Func函数
Func(5, "Hello World");打印结果
Template Function Args [ size : 2 ] [ int ] [ char const [12] ]
相关文章推荐
- C++ - 非类型模板参数(nontype template parameters) 使用 及 代码
- c++模板特性---------可变参数的使用
- C++ 11 可变模板参数的两种展开方式
- C++学习之可变参数的函数与模板
- C++ 11可变参数接口设计在模板编程中应用的一点点总结
- C++模板参数类型(转载)
- C++可变模板参数中&&和&的使用
- C++可变参数的函数与模板实例分析
- [c++][语言语法]函数模板和模板函数 及参数类型的运行时判断
- c++ template笔记(3)非类型模板参数nontype template parameters
- C++:为什么unique_ptr的Deleter是模板类型参数,而shared_ptr的Deleter不是?
- c++无类型参数模板(non-type template parameter)
- C语言简单宏函数实现C++模板功能(类型本身作为函数参数)
- C++ Has Become More Pythonic ( tuple & 可变模板参数 )
- [置顶] C++ 通用可变参数高级函数模板
- C++11可变数量模板参数可变类型模板参数并使用lamada函数调用使用范例
- C++ 11 可变模板参数详解
- C/C++可变参数宏, 编译期获取宏的可变参数长度
- C++学习之可变参数的函数与模板
- C++ 类模板中非类型参数的模板参数