我试图调用两个相同的函数(一个是模板化的,另一个是正常的)。模板化的编译器可以成功编译,但是非模板化的编译器会产生编译错误。为什么?
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);
会导致编译错误?