自移动分配和标准库
在 C 11 中,标准库提供了有关自移动分配的某些保证。根据标准,如果函数参数绑定到右值引用参数,则实现可以假设该参数是对该参数的唯一引用。
考虑以下函数:
由于向量参数绑定到右值引用参数,因此 std::vector
标准规定,右值引用参数可以假定为纯右值,从而排除了在此类情况。传递给 selfAssign 函数的向量很可能会处于无资源状态,或者如果容量已经为 0,则将进行无操作。
但是,该标准的最新工作草案 N4618 ,稍微修改这些要求。具体来说,它指出,如果 t 和 rv 不引用同一对象,则在赋值“t = rv”之后,t 可能只需要包含赋值之前 rv 的等效值。不管怎样,赋值后 rv 的状态仍然是未指定的。
以上是C 11 中的右值参考参数是否可以进行自移动分配?的详细内容。更多信息请关注PHP中文网其他相关文章!