【发布时间】:2018-06-10 12:09:12
【问题描述】:
C++11 引入了新的值类别,其中之一是xvalue。
Stroustrup 的 explained 类似于(im 类别):“它是一个值,具有标识,但可以从中移出”。
另一个来源, cppreference 解释:
glvalue 是一个表达式,其求值决定了对象、位域或函数的身份;
而xvalue 是glvalue,所以xvalue 也是如此。
现在,我想如果xvalue 有身份,那么我可以检查两个xvalues 是否引用同一个对象,所以我取xvalue 的地址。事实证明,这是不允许的:
int main() {
int a;
int *b = &std::move(a); // NOT ALLOWED
}
xvalue有身份是什么意思?
【问题讨论】:
标签: c++ c++11 move-semantics xvalue