首页 >后端开发 >C++ >C 11 中的右值参考参数是否可以进行自移动分配?

C 11 中的右值参考参数是否可以进行自移动分配?

Mary-Kate Olsen
Mary-Kate Olsen原创
2024-11-10 13:52:02664浏览

Is Self Move Assignment Possible with Rvalue Reference Parameters in C  11?

自移动分配和标准库

在 C 11 中,标准库提供了有关自移动分配的某些保证。根据标准,如果函数参数绑定到右值引用参数,则实现可以假设该参数是对该参数的唯一引用。

考虑以下函数:

由于向量参数绑定到右值引用参数,因此 std::vector::operator=(vector&& other) 的实现可以假设 other 是一个右值。因此,在 selfAssign 函数中 v 不可能进行自移动赋值。

标准规定,右值引用参数可以假定为纯右值,从而排除了在此类情况。传递给 selfAssign 函数的向量很可能会处于无资源状态,或者如果容量已经为 0,则将进行无操作。

但是,该标准的最新工作草案 N4618 ,稍微修改这些要求。具体来说,它指出,如果 t 和 rv 不引用同一对象,则在赋值“t = rv”之后,t 可能只需要包含赋值之前 rv 的等效值。不管怎样,赋值后 rv 的状态仍然是未指定的。

以上是C 11 中的右值参考参数是否可以进行自移动分配?的详细内容。更多信息请关注PHP中文网其他相关文章!

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn