新手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