【发布时间】:2016-05-24 11:28:15
【问题描述】:
我编写了以下代码,对于指针,它显示了正确的参数类型,但是当我使用引用时,它只显示 int 而没有 const。为什么?
template <typename T>
void increment(T& x)
{
std::cout << "Argument type is : " << typeid(x).name() << std::endl;
//x = x + 1;
}
template <typename T>
void increment(T* x)
{
std::cout << "Argument type is : " << typeid(x).name() << std::endl;
//x = x + 1;
}
int main()
{
const int x = 0;
const int y = x;
increment(x);
increment(&y);
}
输出:
Argument type is : int
Argument type is : int const *
请您解释一下为什么const 没有在参考中显示?
【问题讨论】:
-
因为
const是限定符,而不是类型? -
为什么它显示指针参数的这个限定符?
-
尝试打印:
typeid(int const).name(). -
... 并尝试打印
typeid(int const*).name()和typeid(int * const).name()。
标签: c++ templates reference type-deduction