使用函数模板时,我只能将参考变量用作函数参数。
下面的程序(查找两个数字之间的最小值)可以正常工作。
//Program to calculate minimum among two numbers
#include<iostream>
using namespace std;
template <class ttype>
//Using reference variables
//as function parameters
ttype min(ttype& a, ttype& b)
{
ttype res = a;
if (b < a)
res = b;
return res;
}
int main()
{
int a = 5, b = 10;
int mini = min(a, b);
cout << "Minimum is: " << mini << endl;
return 0;
}
但是,当我如下更改功能时:
template <class ttype>
//Using normal variables
//as function parameters
ttype min(ttype a, ttype b)
{
ttype res = a;
if (b < a)
res = b;
return res;
}
我得到编译错误。
我们应该在使用函数模板时仅使用参考变量吗?
最佳答案
min
与std::min
冲突,因为您是using namespace std;
您可以执行以下操作对其进行修复,其中明确指出要使用所有命名空间之外的min
:
int mini = ::min(a, b);
或者,摆脱
using
,它会起作用。这两种解决方案都可以在
&
和不使用的情况下在gcc上使用。