fja*_*sze 3 c++ templates partial-specialization specialization
我只有一个简单的问题,请查看此代码:
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 );
}
Run Code Online (Sandbox Code Playgroud)
用g ++ 4.7.2编译当然可以,但我不清楚的是为什么输出是"2"而不是"3".
据我记得,非模板函数应始终优先用于模板,因此为什么称为专用foo?
谢谢
您具体使用的是专业版.你做到了这个:
template <typename T>
void foo(T a) {
std::cout << "1" << std::endl;
}
void foo(float a) {
std::cout << "2" << std::endl;
}
int main(void) {
foo(1.0f);
}
Run Code Online (Sandbox Code Playgroud)
而不是它会选择非模板版本.
| 归档时间: |
|
| 查看次数: |
174 次 |
| 最近记录: |