为什么非模板函数无法在模板函数编译的地方编译?

时间:2019-05-03 08:05:42

标签: move forwarding-reference

我试图调用两个相同的函数(一个是模板化的,另一个是正常的)。模板化的编译器可以成功编译,但是非模板化的编译器会产生编译错误。为什么?

template <typename ParamType>
void Template_universal_ref(ParamType&& param)
{
    cout << "Template_universal_ref, param : " << param << endl;
}

void NonTemplate_universal_ref(int&& param)
{
    cout << "NonTemplate_universal_ref, param : " << param << endl;
}

int main()
{
    int x=5;
    Template_universal_ref(x);
    //NonTemplate_universal_ref(x); // This is giving compilation error
    return 0
}

我认为NonTemplate_universal_ref(x);Template_universal_ref(x);的特殊版本。为什么NonTemplate_universal_ref(x);会导致编译错误?

0 个答案:

没有答案