标签:
1. 如图所示代码,模板函数 compare(const T&, const T&) 要求两个参数类型要一样。
compare("bye","dad") 调用,将模板参数推断为 const char[4] (因为还有一个 NULL 字符串结尾),而且两个参数都为 const char[4],所以可以正常实例化模板函数。
而 compare("hi","world") 调用,将两个模板参数本别推断为 const char [3] 和 const char [6],两个参数类型不同,所以无法实例化该模板参数。
2. 如图所示:
calc(ch,‘c‘)实例化了 char calc(char,int)函数,因为 ‘c‘ 的类型为 char ,可以转换为 int。
同样,因为 float 类型可以转换为 int 类型,所以 calc(d,f) 调用可以正常实例化 double calc(double,int) 函数。
又因为 ch 和 ‘c‘ 都是 char 类型,所以 fcn(ch,‘c‘) 可以实例化 char fcn(char,char) 函数。
而 d 和 f 分别是 double 和 float 类型,所以无法实例化要求两个参数类型相同的 fcn(T,T) 函数。
3. 指定显示模板参数
标签:
原文地址:http://www.cnblogs.com/dongling/p/5734156.html