我正在阅读第5版的C++ Primer,在p中。 71他们首先给出以下代码示例:

const int ci = 0, &cj = ci;
decltype(ci) x = 0;
decltype(cj) y = x;
decltype(cj) z; //error

然后他们说:



这是什么意思?我不明白那里的y指的是x。那么有什么收获呢?

最佳答案

我相信他们试图说decltype(cj)不会给您cj所指对象的类型(即const int),而是会给您cj本身的类型。因此y将是const int&

将其与之进行比较的情况是在表达式中使用引用的名称时。该标准说:



也就是说,在表达式中使用引用的名称时,作用的不是引用而是引用的对象。这就是给引用类型提供“别名”功能的原因。

10-04 12:33