2.2 实参的演绎 (deduction)
当我们为某些实参调用一个诸如max()的模板时,模板参数可以由我们所传递的实参来决定。如果我们传递了两个int给参数类型T const&,那么C++编译器能够得出结论:T必须是int。注意,这里不允许进行自动类型转换;每个T都必须正确地匹配。例如:
template <typename T>
inline T const& max (T const& a, T const& b);
…
max(4,7) //OK: 两个实参的类型都是int
max(4,4.2) //ERROR:第1个T是int,而第2个T是double
有3种方法可以用来处理上面这个错误:
1.对实参进行强制类型转换,使它们可以互相匹配:
max ( static_cast<double>(4),4.2) //OK
2.显式指定(或者限定)T的类型:
max<double>(4,4.2) //OK
3.指定两个参数可以具有不同的类型。
关于这些话题更详细的讨论,请看下一节。
| 回书目 上一节 下一节 |
|
||||
| · Linux——从菜鸟到高手 · 体验Visual Studio 200.. · SOA 面向服务架构 · CISSP认证成长之路 · 隐私保护技术探讨 · WCF开发基础 · 珊瑚虫QQ作者侵权案开庭 · SQL Server 2008/2005.. |
· 华为员工自杀频频拷问.. · 计算机网络维护入门 · 开源虚拟化技术Xen · 贝恩资本携手华为22亿.. · 如何优化IT 控制能耗 · VMware技术应用 · 打造安全服务器 · iSCSI应用与发展 |
|||
|
||||
| · iSCSI应用与发展 · SQL Server 2008/2005.. · SOA 面向服务架构 · SQL Server 2008/2005.. · iSCSI应用与发展 · RAID——磁盘阵列基础 · 中间件应用技术专题 · 病毒查杀专题 |
· 国际文档格式标准开战 · Linux防火墙 · 打造安全服务器 · Sniffer安全技术从入门.. · SOA 面向服务架构 · ADSL应用面面俱到 · 入侵防护系统(IPS)初探 · TCP/IP协议专题 |
|||
|
||||
| · iSCSI应用与发展 · 中间件应用技术专题 · SQL Server 2008/2005.. · SOA 面向服务架构 · iSCSI应用与发展 · RAID——磁盘阵列基础 · 身份认证技术 · 病毒查杀专题 |
· 清除流氓软件——51CTO.. · Sniffer安全技术从入门.. · SOA 面向服务架构 · 了解统一威胁管理(UTM).. · ADSL应用面面俱到 · ADSL应用面面俱到 · 反垃圾邮件技术应用 · TCP/IP协议专题 |
|||