隐士推断
如果函数模板调用参数(圆括号里的参数)的类型相关于该模板参数(尖括号里的参数)
那么在调用该函数模板时,及时不显示指定模板实参,编译器也有能力根据调用参数一致的语法表达。但是要注意如果编译器隐式推断的类型和程序设计者所期望的类型不一致,可能导致结果错误,这时不要再使用隐式推断,或者先做类型转换
1 #include <iostream>
2 using namespace std;
3 template<typename T>
4 T max(T x,T y){
5 return x < y ? y : x;
6 }
7 int main(void){
8 int a = 123,b = 456;
9 cout << ::max<int>(a,b) << endl;
10 cout << ::max(a,b) << endl; //隐士推断
11
12 double c = 1.3,d = 4.6;
13 cout << ::max<double>(c,d) << endl;
14 cout << ::max(c,d) << endl; //隐士推断
15 string e = "hello",f = "world";
16 cout << ::max<string>(e,f) << endl;
17
18 char g[] = "hello",h[] = "world";
19 cout << ::max<string>(g,h) << endl;
20 //cout << ::max(g,h) << endl; //隐士推断
cout << ::max(string(g),string(h)) << endl;
21 return 0;
22 }
本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请
点击举报。