以下是一个人为编造的实际代码示例:
int** Ptr = 0;
decltype(Ptr[0]) Test = (int*)0;
我遇到了以下错误:
错误 C2440:'initializing': 无法从'int *'转换为'int *&'
我不确定为什么会出现这个错误,因为根据我对 decltype
的理解(如果我理解有误,请纠正),它只是接受任何你给予的表达式并将其解析为实际类型。在这种情况下,Ptr[0]
是一个 int*
,所以我期望得到:int* Test = (int*)0;
我错过了什么?为什么会出现那个错误?
Ptr[0]
的类型是左值引用,因此尝试用 prvalue 初始化它会失败。 - Weak to Enuma ElishPtr[0]
转换为*(Ptr + 0)
,并且在上面链接中解释了*Ptr
的decltype
。 - fghj