我正在读C++ Primer,第5版,其中p.71他们首先给出这个代码示例:
const int ci = 0, &cj = ci;
decltype(ci) x = 0;
decltype(cj) y = x;
decltype(cj) z; //error
Run Code Online (Sandbox Code Playgroud)
然后他们说:
值得注意的
decltype是,唯一的上下文是定义为引用的变量不被视为它引用的对象的同义词.
这是什么意思?我不明白.在y有指x.那捕获的是什么?
我相信他们试图说这decltype(cj)不会给你所cj引用的对象的类型(即),const int但会给你自己的类型cj.所以y会const int&.
要比较它的情况是在表达式中使用引用的名称.标准说:
如果表达式最初具有"对T的引用"类型(8.3.2,8.5.3),则在进行任何进一步分析之前将类型调整为T. 表达式指定由引用表示的对象或函数,表达式是左值或x值,具体取决于表达式.
也就是说,当在表达式中使用引用的名称时,它不是被引用的引用,而是它引用的对象.这就是为引用类型提供"别名"功能的原因.
| 归档时间: |
|
| 查看次数: |
142 次 |
| 最近记录: |