【发布时间】:2015-11-09 01:01:03
【问题描述】:
以下是实际代码的人为示例:
int** Ptr = 0;
decltype(Ptr[0]) Test = (int*)0;
我得到错误:
错误 C2440:“正在初始化”:无法从“int *”转换为“int *&”
我不确定为什么会这样,因为根据我对decltype 的理解(如果我错了,请纠正我)它只需要你给出的任何表达式并将其解析为它的实际类型。在这种情况下,Ptr[0] 是int*,所以我期待:int* Test = (int*)0;
我错过了什么?为什么会出现这个错误?
【问题讨论】:
-
可能
Ptr[0]的类型是左值引用,因此尝试使用纯右值对其进行初始化失败。 -
此stackoverflow.com/questions/17241614/…
Ptr[0]的副本已转换为*(Ptr + 0),而decltype的decltype的内容在上面的链接中进行了解释