使用函数模板时,我只能将参考变量用作函数参数。

下面的程序(查找两个数字之间的最小值)可以正常工作。

//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;
}


我得到编译错误。

我们应该在使用函数模板时仅使用参考变量吗?

最佳答案

minstd::min冲突,因为您是using namespace std;

您可以执行以下操作对其进行修复,其中明确指出要使用所有命名空间之外的min

int mini = ::min(a, b);


或者,摆脱using,它会起作用。

这两种解决方案都可以在&和不使用的情况下在gcc上使用。

09-13 13:26