gpt4 book ai didi

c++ - xvalues 不是 glvalues 和 rvalues 吗?

转载 作者:可可西里 更新时间:2023-11-01 16:38:00 28 4
gpt4 key购买 nike

我读了这个answer引起我注意的部分是:

int i;
int* p = &i;
int& f();
int&& g();

int h();

h() // prvalue
g() // glvalue (xvalue)
f() // glvalue (lvalue)
i // glvalue (lvalue)
*p // glvalue (lvalue)

std::move(i) // glvalue (xvalue)

记住这个图表

Expression type chart

我很困惑。

如果 glvalue 是左值或 xvalue,rvalue 是右值或 xvalue,那么说 g 是不是错误的() 是一个左值而不说它也是一个右值?与 std::move(i) 相同。

我的上述代码版本会是什么样子:

h() // rvalue (prvalue)
g() // glvalue and rvalue (xvalue)
f() // glvalue (lvalue)
i // glvalue (lvalue)
*p // glvalue (lvalue)

std::move(i) // glvalue and rvalue(xvalue)

至于标准是怎么说的(我只引用最相关的部分):

An rvalue (so-called, historically, because rvalues could appear on the right-hand side of an assignment expression) is an xvalue

A glvalue (“generalized” lvalue) is an lvalue or an xvalue.

当然,我可能是错的。如果是这样,请帮我一下:)

最佳答案

If a glvalue is either an lvalue or an xvalue and an rvalue is either a prvalue or an xvalue, isn't it wrong to say that g() is a glvalue without saying that it is also an rvalue?

是的。

如果 g() 是一个xvalue,那么它既是一个glvalue 又是一个rvalue

关于c++ - xvalues 不是 glvalues 和 rvalues 吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44848970/

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