爲什麼編譯器允許這樣做?爲什麼編譯器不會拋出編譯錯誤?
#include <iostream>
using namespace std;
template<typename T>
void func(T t)
{
cout<<"The value is :"<<t<<"\n";
}
template<>
void func<int>(int d) //Template Specialization
{
cout<<"Template function\n";
}
void func(int d) //Non-template function with same name & signature
{
cout<<"Non-template function\n";
}
int main()
{
func(4);
func(4.67);
func("TENE");
}
是''template <> void func(int d)''部分特化?一個部分看起來像''模板 void func (int d)'',不是?在''<>''中,你完全定義了類型「int」。 –
fogbit
2012-04-23 09:58:23
你說得對。編輯評論。 – cppcoder 2012-04-23 10:03:31
也許你可以說出你預期的錯誤,以及爲什麼。 – MSalters 2012-04-23 14:09:32