C++ decltype-“数据类型”;定义为引用的变量不被视为其引用对象的同义词的唯一上下文";?

C++ decltype-“数据类型”;定义为引用的变量不被视为其引用对象的同义词的唯一上下文";?,c++,C++,然后他们说: 值得注意的是,decltype是唯一一个定义为引用的变量不被视为其引用对象同义词的上下文 这是什么意思?我不明白。那里的y指的是x。那么问题是什么呢?我相信他们是想说decltype(cj)不会给出cj所指对象的类型(即const int),但会给出cj本身的类型。所以y将是const int& 与之比较的情况是在表达式中使用引用的名称时。标准上说: 如果表达式最初具有类型“引用T”(8.3.2、8.5.3),则在进行任何进一步分析之前,将该类型调整为T。表达式指定由引用表示的对象

然后他们说:

值得注意的是,
decltype
是唯一一个定义为引用的变量不被视为其引用对象同义词的上下文


这是什么意思?我不明白。那里的
y
指的是
x
。那么问题是什么呢?

我相信他们是想说
decltype(cj)
不会给出
cj
所指对象的类型(即
const int
),但会给出
cj
本身的类型。所以
y
将是
const int&

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

如果表达式最初具有类型“引用T”(8.3.2、8.5.3),则在进行任何进一步分析之前,将该类型调整为T。表达式指定由引用表示的对象或函数,表达式是左值或x值,具体取决于表达式


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

decltype始终引用基础类型。您必须明确声明您的对象是编译器提供的引用(就像您总是收到左值一样;即使您想要得到右值)。但是,是的,就在这里+很好的解释。谢谢