我猜这个文档可能只是一个简短的介绍:n3055
整个屠杀始于移动语义。一旦我们有了可以移动且不能复制的表达式,突然容易掌握的规则就要求在可以移动的表达式之间以及在哪个方向上进行区分。
根据我对草案的猜测,r / l值的区别保持不变,只是在移动事物变得混乱的情况下。
他们需要吗?如果我们希望放弃这些新功能,可能不会。但是为了更好的优化,我们可能应该接受它们。
引用n3055:
- 一个左值(所谓的,历史上,因为左值可以出现在赋值表达式的左侧)表示一函数或一个对象。 [示例:如果E是指针类型的表达式,则*E 是指向所指向的对象或函数的左值表达式E 。又例如,调用返回类型为左值引用的函数的结果为左值。]
- 一个x值(一个“到期”值)也指一个对象,通常接近其寿命的末尾(使得其资源可以被移动,例如)。xvalue是某些包含rvalue引用的表达式的结果。 [示例:调用返回类型为rvalue引用的函数的结果为xvalue。
- 甲glvalue (“广义”左值)是左值 或x值。
- 一个右值(在历史上,因为右值可能出现在赋值表达式的右侧,所以被称为历史值)是一个x值,其临时对象或子对象或与对象不相关的值。
- 甲 prvalue(“纯”右值)是一个rvalue这不是一个x值。 [示例:调用返回类型不是引用的函数的结果是prvalue]
所讨论的文档对该问题提供了很好的参考,因为它显示了由于引入了新术语而导致的标准的确切变化。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)