我只有一个简单的问题,请检查此代码:
template < typename A >
void foo( A a )
{ cout<<"1\n"; };
template< >
void foo<float>( float a )
{ cout<<"2\n"; }
void foo( float a )
{ cout<<"3\n"; }
int main()
{
foo<float>( 1.0f );
}
用 g++ 4.7.2 编译当然可以,但我不清楚为什么输出是“2”而不是“3”。
据我所知,非模板函数总是比模板函数更受欢迎,那么为什么称为专门的 foo 呢?
谢谢