为什么在以下示例中创建临时

时间:2015-07-22 21:46:04

标签: c++

你能解释一下(在标准方面更好) 为什么在以下示例中创建临时标记为注释的行?

'defaultController' => 'timesheet', 

1 个答案:

答案 0 :(得分:2)

每次转换为对象类型的结果都是临时的。

当转换是身份转换时,请注意Microsoft Visual C ++不符合此规则。我已经报告了a bug on Microsoft Connect,它还显示了标准中需要创建临时的规则:

  

表达式(T) cast-expression的结果是T类型。如果T是左值引用类型或对函数类型的右值引用,则结果为左值;如果T是对象类型的右值引用,则结果为x值; 否则结果是prvalue

(标准的第5.4节[expr.cast],在C ++ 11中添加了xvalue语言,但在这种情况下创建临时语言一直存在)