为什么此代码的输出:
#include <iostream>
template<typename T> void f(T param)
{
std::cout << "General" << std::endl ;
}
template<> void f(int& param)
{
std::cout << "int&" << std::endl ;
}
int main()
{
float x ; f (x) ;
int y ; f (y) ;
int& z = y ; f (z) ;
}
是
一般
一般
一般
第三个令人惊讶,因为该功能专门用于int&
编辑:我知道重载可能是一个合适的解决方案。我只是想了解它背后的逻辑。