【发布时间】:2018-12-25 14:10:48
【问题描述】:
我想知道为什么,当我使用decltype (* pointer) 时,它将变量的类型定义为引用。例如:
int i = 42, * p = & i;
decltype (* p) c = i;
现在c 是一个参考(链接到i)。为什么它是参考而不是整数?我正在读《Cpp Primer 5th》这本书。版。 P. 110 这么说,我不明白为什么。
【问题讨论】:
-
因为解引用运算符被定义为返回一个
T&。那是C++。如果要删除引用,请使用std::remove_reference_t。 -
@DeiDei 谢谢!对我来说,返回引用的指针没有意义,我迷路了,但在书中说,我正在阅读这里,谢谢!
-
试试
decltype(+*p)。 -
@curiousguy 我的心智模型是,只有声明为
T类型的对象才是T类型。所以对于int i;,i的类型是int。但是任何其他以任何其他名称引用i的都是int &。这对我来说似乎很优雅,但我敢打赌,有些细节会使这种模型不切实际。
标签: c++ pointers reference language-lawyer decltype