C++中的模板变量

kil*_*der 3 c++ templates

我有这个代码:

template <class T>
T GetMax (T a, T b) {
  return (a>b?a:b);
}


int main () {
  int i=51, j=26, k;
  long l=100, m=15, n;
  k=GetMax(i,j);
  n=GetMax(l,m);
  cout << k << endl;
  cout << n << endl;
  return 0;
}
Run Code Online (Sandbox Code Playgroud)

如何更改变量k和n的数据类型,以便它们足够动态以接受返回的值.如果返回的值是double,则k和n将自动加倍,所以我无需担心我是传递int还是double.

我尝试在网上和书中搜索但没有运气.你能帮助我吗?我是模板的新手.

Jos*_*eld 9

在C++ 11中,您可以使用auto:

auto k = GetMax(i,j);
auto n = GetMax(l,m);
Run Code Online (Sandbox Code Playgroud)

从用于初始化它们的表达式推导出的类型kn.

在C++ 11之前,您需要明确地给出类型.但是,您应始终能够以某种形式编写类型,因为您知道参数的类型.