【发布时间】:2012-12-05 18:09:51
【问题描述】:
在我努力理解右值引用的过程中,我一直在思考编译器何时会确定特定的函数参数是右值引用,以及何时会确定它是左值引用。
(此问题与引用折叠有关;请参阅Concise explanation of reference collapsing rules requested: (1) A& & -> A& , (2) A& && -> A& , (3) A&& & -> A& , and (4) A&& && -> A&&)。
特别是,我一直在考虑编译器是否总是将未命名的对象视为右值引用和/或编译器是否将始终将临时对象视为右值引用。
反过来,这让我质疑未命名对象是否等同于临时对象。
我的问题是:未命名的对象总是临时的吗?临时对象总是未命名吗?
换句话说:未命名对象和临时对象是否等价?
【问题讨论】:
-
我不太了解技术术语,无法作为答案发布,但我认为这是一个反例:
void foo(int) {}。这里的参数是一个不是临时的,但没有名字的对象。 -
好点。这个例子似乎清楚地表明,与右值引用相关的是 temporary 对象 - 而不是 unnamed 变量。
-
真的有“未命名对象”的定义吗?
-
我想知道“临时对象”的定义(以及...)
标签: c++