根据@Patatoswatter的建议,我创建了一个新的讨论。参考表达式的评估
参考是从@Potatoswatter
this response考虑的代码片段,
int i = 3, &j = i;
j = ++ i;
即我谋上清晰的注释,是这样的。 (这似乎是在我的未测序评价a.k.a序列点的理解的重要缺失的那一块):
@Chubsdad:尽管这是一个别名, 其glvalue评价不 需要我的glvalue评价。 一般而言,评估 参考不需要原始对象在手。有 没理由它应该是UB,所以它使得 感觉应该有一个简单的漏洞 或者转化为不是 的UB代码。
和
参考不告诉 编译器去看看引用 变量,并得到其左值,因为它 可能不知道什么是变量引用 。编译器计算引用的左值,并且左值标识对象。如果您要 想进一步辩论,请 开个新问题。
在这个问题的任何可能缺乏明确的是“不确定的行为”我通过努力理解“未测序的评价”,“序列点”会的一部分等C++ 0x中。
只是为了修补第一个陈述,“手头上”的意思是“静态确定”。通过“转换为不是UB的代码”,我的意思是将由于对lvalue对象的副作用而产生的UB代码进行处理,其随后不被评估为rvalues,例如'i = ++ i',并将引用变量'j'在这里)复制这样的左值,所以它们的评估不会受名义上的副作用的影响。 – Potatoswatter 2010-10-06 13:18:27