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