C++中函数模板的返回值是模板类型参数的调用方法
1 函数模板
模板定义以关键字template开始,后接模板形参表,模板形参表是用尖括号扩住的一个或多个模板形参的列表,形参之间以逗号分隔。关于函数模板的详细介绍,请参考《C++中模板函数及模板类的使用(上)》。
2 函数模板的返回值是模板类型参数
函数模板中的参数和返回值都可以是模板类型参数。编译器必须通过调用函数模板的实参来推断模板类型参数的具体类型。但是,当函数模板的返回值是模板类型参数时,编译器无法通过函数调用来推断返回值的具体类型。此时,在调用函数时必须提供一个显式模板实参(explicit template argument)。
3 显式模板实参
显式模板实参在尖括号中给出,位于函数名之后,实参列表之前。显式模板实参按由左向右的顺序与对应的模板参数匹配。例如
template<typename T1, typename T2, typename T3>T1 myFunc(T2, T3);
此时,调用myFunc()函数模板的代码为
myFunc<int, char, float>(‘1’, 0.1F);
此时,T1的类型是int,T2的类型是char,T3的类型是Float。
如果可以从调用函数的实参中推断出来T2和T3的类型,则可以从显式模板实参的尾部开始,从右向左依次省略。例如,以上调用函数的代码还可以写成
myFunc<int>(‘1’, 0.1F);
此时,T2和T3的类型可以通过函数的实参进行推断。
4 实战
在CSDN论坛中有朋友提到以下问题
template <class t1, class t2>t1 fun(t2 x, t2 y) {if (x > y)cout << x;else return x;}
此时,调用fun()函数,
fun(5, 6);
此时,编译工具会提示“没有与参数列表匹配的参数模板”。产生以上问题的主要原因就是编译器无法推断出t1的类型。可以使用指定显式模板实参的方法解决。
fun<int,int>(5, 6)
或者
fun<int>(5, 6)
C++中函数模板的返回值是模板类型参数的调用方法相关推荐
- python中如何定义函数的传入参数是option的_python – 当使用@ click.option将命令行参数传递给函数时,如何返回值?...
我试图使用 click python包将命令行参数传递给函数.官方文档中的示例如解释的那样工作.但是文档中没有提到如何返回值.文档中没有任何函数返回值,因此我不明白如何执行此操作. 以文档为例: im ...
- 如何引用传递参数从一个函数中得到多个返回值
2019独角兽企业重金招聘Python工程师标准>>> 通过"引用"传递参数的方法从一个函数中得到多个返回值.就像三元运算符一样,大部分受过正式编程训练的程序员都 ...
- MATLAB中如何忽略函数中前几个不需要的返回值而只取需要的返回值,例如:只取函数第二个返回值,而忽略第一个返回值
1 致谢 感谢网友honglei.chen的回答, 原文链接如下: https://www.ilovematlab.cn/thread-203269-1-1.html 2 前言 今天在学习神经网络算法 ...
- 以下是一个使用 VBA 的例子,演示了 ByVal 和 ByRef 的区别,以及如何在函数中传递参数和返回值。
以下是一个使用 VBA 的例子,演示了 ByVal 和 ByRef 的区别,以及如何在函数中传递参数和返回值: Sub Example()Dim x As Integer, y As Integerx ...
- C++ 函数的引用返回值
C++ 函数的引用返回值 2009-09-17 09:29 引用是给变量取一个别名,所以引用传递会直接进行变量本身的传递.它的最大好处是可以把别处对变量的改变保留下来,第二好处是它提高了性能:如果函数 ...
- python函数参数定义顺序_Python函数定义-位置参数-返回值
原标题:Python函数定义-位置参数-返回值 1 函数介绍 函数在编程语言中就是完成特定功能的一个词句组(代码块),这组语句可以作为一个单位使用,并且给它取一个名字.可以通过函数名在程序的不同地方多 ...
- python函数参数学习_python学习笔记-11.函数参数和返回值进阶
1. 函数参数和返回值的作用 函数根据有没有参数以及有没有返回值,可以相互组合,共有4种形式: 无参数,无返回值 无参数,有返回值 有参数,无返回值 有参数,有返回值 定义函数时,是否接收参数,或者是 ...
- php的curl如何返回值,怎么在PHP中利用CURL获取返回值
怎么在PHP中利用CURL获取返回值 发布时间:2021-01-05 16:58:39 来源:亿速云 阅读:96 作者:Leah 怎么在PHP中利用CURL获取返回值?针对这个问题,这篇文章详细介绍了 ...
- const 修饰函数参数,返回值,函数体,保护数据
一.const 介绍 1.const 定义 const 修饰的数据类型是指常类型,常类型的变量或对象的值是不能被更新的. 2.const 目的 const 推出的初始目的,正是为了取代预编译指令,消除 ...
最新文章
- android vlc eclipse,在Eclipse下导入vlc-android并编译
- 刘未鹏谈如何学习算法
- I think i need a houseboot C语言 UVA2363
- 国际会议排名zz(通信、网络类)
- 面向机器学习的特征工程翻译版
- 咋一看DWoo 比 Smarty要好
- [zz]C#中的Type类和Assembly类
- java中bash应用_在bash脚本中查找java应用程序的进程ID(以查看目标应用程序是否已在运行)...
- http服务ajax编程
- 【重磅】人工智能长篇报告:1.5万字告诉你AI的应用究竟对人类社会经济有哪些影响...
- 惊!程序员真的把地府后台管理系统做出来了!
- 简单入门Buffer
- 全国哀悼日网站页面变成灰色的filter方法
- Android的动画简单学习
- 第二章 拉普拉斯变换
- 盲目自信、能力不足、年少轻狂,这是我创业失败后总结的3条血泪事实
- 安装CloudReady,体验Chrome OS
- 爬虫爬取图片并保存到电脑
- 工地门禁实名制考勤管理系统
- 读书笔记:遇见未知的自己
热门文章
- 关于移动终端之WiFi测试点的总结
- 错误:登录异常,异常信息:对路径“C:Program Files (x86)IIS ExpressLogInfo.obj”的访问被拒绝
- MATLAB矩阵的加法和减法、MATLAB除法、标量操作
- Web前端系列技术之移动Web开发(从基础开始)①
- 多伦多大学计算机年薪,多伦多大学校方数据公布:商学院毕业生平均起薪9.9万加币...
- 企业IT技术支持(俗称 HELPDESK)对于微软正版认证的解决方案
- linux企业实战-代理服务器
- Eureka参数配置项
- java包路径_包java路径
- levelDB学习记录