fre*_*low 5 c++ temporary rvalue c++11
我花了很长时间来理解右值和临时对象之间的区别.但现在最终的委员会草案在第75页说明:
一个右值 [...] 是一个x值,临时对象或子对象,或它们的不与一个对象相关联的值.
我不敢相信自己的眼睛.这一定是个错误吧?
为了澄清,以下是我理解这些术语的方式:
#include <string>
void foo(std::string&& str)
{
std::cout << str << std::endl;
}
int main()
{
foo(std::string("hello"));
}
Run Code Online (Sandbox Code Playgroud)
在这个程序中,有两个表达式表示同一个临时对象:prvalue std::string("hello")和左值str.表达式不是对象,但它们的评估可能会产生一个.具体来说,prvalue的计算产生一个临时对象,但prvalue不是临时对象.有没有人同意我或让我疯了?:)