C++11 引入了新的值类别,其中之一是xvalue
.
Stroustrup 将其解释为类似于 ( im
category):“它是一个值,具有标识,但可以从中移出”。
另一个来源, cppreference解释说:
泛左值是一个表达式,其评估决定了对象、位域或函数的身份;
And xvalue
is a glvalue
,所以这 is 陈述也适用于xvalue
。
现在,我想如果 anxvalue
有身份,那么我可以检查两个xvalue
s 是否引用同一个对象,所以我取 an 的地址xvalue
。事实证明,这是不允许的:
int main() {
int a;
int *b = &std::move(a); // NOT ALLOWED
}
xvalue
有身份是什么意思?