gpt4 book ai didi

c++ - "xvalue has identity"是什么意思?

转载 作者:可可西里 更新时间:2023-11-01 18:36:33 25 4
gpt4 key购买 nike

C++11 引入了新的值类别,其中之一是 xvalue .

explained由 Stroustrup 描述为类似(im 类别):“它是一个值,具有身份,但可以从中 move ”。

另一个来源, cppreference解释:

a glvalue is an expression whose evaluation determines the identity of an object, bit-field, or function;

xvalueglvalue , 所以这句话对于 xvalue 是正确的也是。

现在,我认为如果 xvalue有身份,那么我可以检查两个 xvalue s 指的是同一个对象,所以我取 xvalue 的地址.事实证明,这是不允许的:

int main() {
int a;
int *b = &std::move(a); // NOT ALLOWED
}

xvalue 是什么意思?有身份吗?

最佳答案

xvalue 确实有一个标识,但在语言中有一个单独的规则,即一元 & 表达式需要一个左值操作数。来自 [expr.unary.op]:

The result of the unary & operator is a pointer to its operand. The operand shall be an lvalue [...]

在执行右值到左值转换后,您可以通过将 xvalue 绑定(bind)到引用来查看 xvalue 的标识:

int &&r = std::move(a);
int *p = &r; // OK

关于c++ - "xvalue has identity"是什么意思?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50783525/

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