gpt4 book ai didi

c++ - 从函数返回的左值引用实际上是右值(从调用者的角度来看)吗?

转载 作者:塔克拉玛干 更新时间:2023-11-03 08:24:41 25 4
gpt4 key购买 nike

如何让左值引用引用从函数返回的左值引用?从调用者的角度来看,从该函数返回的左值引用实际上不是右值吗?例如:

class Obj {};

Obj& refToRef(Obj& o) {
return o;
}

int main() {
Obj o;
Obj& o2 = refToRef(o);
}

o2(左值引用)如何能够引用看似右值的内容?

最佳答案

Isn't the lvalue reference returned from that function actually an rvalue from the perspective of the caller?

不,因为函数调用的结果总是是右值。

来自 [expr.call]/14 (强调我的):

A function call is an lvalue if the result type is an lvalue reference type or an rvalue reference to function type, an xvalue if the result type is an rvalue reference to object type, and a prvalue otherwise.

我很确定这条规则的存在是专门为了避免您的问题所询问的问题。

关于c++ - 从函数返回的左值引用实际上是右值(从调用者的角度来看)吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55692113/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com