2011-01-23 101 views
0

似乎C++模板可以在只有一個模板參數時自動扣除類型。例如,具有多於1個類型名稱的模板函數

template<typename T> 

void f(const T &t) 
{ 
    cout << t << endl; 
} 

f(1); 

很好。

然而,

template<typename T1, typename T2> 

void f(const T1 &t1, const T2 &t2) 
{ 
    cout << t1 << t2 << endl; 
} 

f(1, 2); 

上述代碼無法通過編譯。這是因爲編譯器的能力還是違背了標準?

+6

編譯器應該能夠推斷出多個模板參數。你能發佈完整的可編譯代碼來證明這個問題嗎? – 2011-01-23 16:27:23

+3

據我所知,這段代碼沒有錯。 http://www.ideone.com/AEVs4 – 2011-01-23 16:29:22

回答

3

第二個函數和調用是完全有效的。你的編譯器被老化或老掉牙拒絕了。

相關問題