新手C++和書籍學習,所以我可以是相當迂腐或在我的推理miopic。模板函數和常量/非常量參考參數
在模板函數的情況下,我已經讀過,當Reference傳遞參數時,只有從Reference /指針到NonConst到Reference /指向Const的轉換纔會完成。
這意味着我相信
template <typename T> int compare(T&, T&);
當調用比較(CI1,CI1),與CI1是consntant INT,從常量到NonCost轉換是不允許的參考參數應該失敗。
但它在我的編譯器(Visual C++ 10)中有效。有人能解釋我發生了什麼問題嗎?
template <typename T> int compare(T&, T&);
template <typename T> int compare(T &v1, T &v2)
{
// as before
cout << "compare(T, T)" << endl;
if (v1 < v2) return -1;
if (v2 < v1) return 1;
return 0;
}
const int ci1 = 10;
const int ci2 = 20;
int i1 = 10;
int i2 = 20;
compare(ci1, ci1);
compare(i1, i1);
或者使用g ++ filt命令行工具解碼 – 2011-04-04 14:10:53