例子1:使用T max(T a,T b)调用会报错Call to ‘max’ is ambiguous,改为T max(T& a,T& b),不再报错。
原因竟然是:max是c++标准库的函数,所以不能用来做用户标识符
哈哈哈哈哈哈哈好的!
#include <iostream>
#include <cmath>
using namespace std;
template<typename T>
T max(T& a,T& b){
return (a>b)?a:b;
}
int main(int argc, const char * argv[]){
int i1=1,i2=3;
double d1=3.298,d2=8.343;
char c1='a',c2='b';
cout<<max(d1,d2)<<' '<<max(i1,i2)<<' '<<max(c1,c2)<<endl;
return 0;
}
好吧,改了函数模版的名字,用T my_show(T a,T b)和T my_show(T &a,T &b),调用时不再报错。
#include <iostream>
#include <cmath>
using namespace std;
template<typename T>
T my_show(T a,T b){
return (a>b)?a:b;
}
int main(int argc, const char * argv[]){
int i1=1,i2&#