我开始阅读有关模板的内容,但对以下内容感到困惑。
template<class T>
T max(T t1, T t2)
{
if (t1 > t2)
return t1;
return t2;
}
int main(){
std::cout<<max<int>(120,14.55);
return 0;
}
输出为 120。但是当我编译上面的代码时,我收到了这个警告:
warning:passing double for argument 2 to T max(T, T) [with T = int].
我的问题是为什么会出现这个警告,因为我已经为T max(int t1,double t2)
.
因为根据我在此处的理解,如果我明确提及仅一种数据类型(此处),编译器int
将从参数类型()中扣除其他数据类型。14.55
这意味着在这种情况下T max(T t1, T t2)
实例化。T max(int t1,double t2)
我从 Internet 上的一些模板文档中读到了这个概念。
请清除我的疑虑,否则我无法继续进行。