请教一个模板问题templatetypename TT max(const T& t1, const T& t2) {return t1 t2 ? t1 : t2}如果
请教一个模板问题
template<typename T>
T max(const T& t1, const T& t2) {
return t1 > t2 ? t1 : t2;
}
如果有下面这样的调用应该怎么做?
int a = 1;
double b = 10.1
2个不同的类型
[解决办法]
这时会出现二义性。
要想支持这种调用,有四种方案:
方案一:调用者保证类型相同:
double value = max( double(a), b );
方案二:调用者指明模板参数
double value = max<double>(a, b);
上两种比较简单,就是调用者需要知道怎样做。
方案三:使用C++11编译器:
template<typename T, typename U>
auto max( T const & v1, U const & v2 )
{
return v1 > v2 ? v1 : v2;
}
...
double value = max(a, b);
