如果我有以下模板方法:
template< typename T >
void function( T a )
{
cout<<"Template T"<<endl;
}
template< typename T >
void function( int a )
{
cout<<"Function taking Int"<<endl;
}
在调用function< float >( 2.5 )
时,第二个函数被称为输出:Function taking Int
。
如果我尝试实例化float类型的函数,我得
void function(float a);
和
void function(int a);
第一个似乎是我传递的双重类型(arg 2.5)的更好匹配。
那么,为什么程序会选择第二种方法?