C++ 返回类型是否被视为右值?

C++ 返回类型是否被视为右值?,c++,C++,只是一个简单的问题,当涉及到返回&&时,我试图模拟一种不好的做法。我知道这是一种不好的做法 这里有一个例子 //dummy is just an empty class dummy && crashtest(){ dummy temp; return std::move(temp); } int main() { dummy && k = crashtest(); return 0; } 这是一种不好的做法,因为k现在在函数

只是一个简单的问题,当涉及到返回
&&
时,我试图模拟一种不好的做法。我知道这是一种不好的做法

这里有一个例子

//dummy is just an empty class
dummy && crashtest(){
    dummy temp;
    return std::move(temp);

}


int main() {
    dummy && k = crashtest();
    return 0;
}
这是一种不好的做法,因为
k
现在在函数中保存了对已破坏
temp
的引用

我尝试了一种不同的方法,在我的
main
中执行类似的操作:

dummy l; //generate temp
dummy && k =  std::move(l); //return value
dummy && d = k; // copy
虽然
l
不会被真正销毁,但它为什么不让我编译?我得到一个错误,说我试图绑定左值。这和函数中发生的事情不一样吗?根据我的理解,在函数中发生的是:

创建temp->std::move(temp)->返回类型
dummy&
接收它->
k
与返回类型临时相等

我需要澄清。返回类型是否被视为
右值


附加问题:如果右值引用变量与右值引用变量相等,会发生什么情况
&&lhs=&&rhs
,lhs是否接受rhs引用?

从函数返回右值引用很可能会导致挂起引用(引用存在,但它引用的临时对象已被销毁)。
在标准中,这实际上被称为xvalue(一个“到期”值)。

从函数返回右值引用很可能会导致挂起引用(该引用存在,但它引用的临时对象已被销毁)。
在标准中,这实际上被称为xvalue(一个“到期”值)。

从函数返回右值引用很可能会导致挂起引用(该引用存在,但它引用的临时对象已被销毁)。
在标准中,这实际上被称为xvalue(一个“到期”值)。

从函数返回右值引用很可能会导致挂起引用(该引用存在,但它引用的临时对象已被销毁)。
这实际上在标准中称为xvalue(一个“到期”值)。

对于不同的视图:用
&
替换
&
,并删除
std::move()
命令。如果你了解这个案例,你也将是你问题中的那个。关于对象的生存期,它是完全相同的。对于不同的视图:将
&&
替换为
&
并删除
std::move()
命令。如果你了解这个案例,你也将是你问题中的那个。关于对象的生存期,它是完全相同的。对于不同的视图:将
&&
替换为
&
并删除
std::move()
命令。如果你了解这个案例,你也将是你问题中的那个。关于对象的生存期,它是完全相同的。对于不同的视图:将
&&
替换为
&
并删除
std::move()
命令。如果你了解这个案例,你也将是你问题中的那个。关于对象的生命周期,它是完全相同的。