STL提取参数模版的类型
来源:互联网 发布:章鱼彩票 知乎 编辑:程序博客网 时间:2024/05/18 11:01
一、解决的问题
1、其实是可以推导出函数的返回值类型的:
但是是无法在模版类的外面进行使用的
下面的两种情况是编译通过的:
(1)
template<class T>T Print(T x){return x;}
(2)
template<class T>struct A{T Print(T value){return value;}};
2、解决T无法在类模版的外面进行使用的问题
例如:
函数定义:
template<class T>struct B{B(T x):_a(x){}typedef T ValueType;T& operator*(){return _a;}T _a;};template<class T>typename T::ValueType Fun1(T value){return *value;}测试用例:
void Test(){B<int> b1(10);cout<<Fun1(b1);}
3、总结
定义了一个模版的函数,这个时候你传入的参数又是一个模版,这个时候怎么使用这个参数模版中的对应的类型,这个时候就可以使用,这个技术:
在参数模版的里面定义一个typededf T ValueType(一定要定义为public的为什么,自己思考),这个时候就可以使用 typename T::ValueType的方式拿到对应的类型,
为什么要加typename,这是因为编译器不知道这个ValueType到底是变量,还是对应的类型,加上typename之后,这个时候就告诉编译器是一个类型,这个时候就可以顺利的同过编译了
0 0
- STL提取参数模版的类型
- C++ 非类型参数的模版实参
- C++ 非类型参数的模版实参
- 非类型模版参数
- STL模版的优缺点
- c++参数类型的识别(STL)
- C++ 非类型模版参数
- 对于模版函数中模版是如何确定参数类型
- 用引用类型实例化模版参数
- 关于STL中几个比较费解的参数类型
- 关于c++内部链接和非类型模版参数的限制
- 多参数的模版函数
- linux中stl模版的用法1
- c++ 函数模版,类模版,实例化,具体化,模版作参数,模版的友元
- 类型的判断【STL】
- STL的map类型
- STL学习之--非类型模板参数
- 8-141 类模版含有多个类型参数
- UVALive 6092 - Catching Shade in Flatland(线段和圆交线段最大长度)
- javascript Date format(js日期格式化)
- 7.2获取资源
- IOS生成同时支持armv7,armv7s,i386,x86_64,arm64的静态库.a文件
- Energy Conversion and Management (ECM) 的审稿周期
- STL提取参数模版的类型
- 硬币问题
- 浏览器开发人员工具使用初步图解
- 贪心算法-会场安排
- MFC-combox和listbox、radio button、group box等控件及onTimer函数的应用
- linux panic分析
- WebService
- Zabbix 安装部署
- 矩阵游戏(二分图匹配)