C 标准库中的自移动赋值
C 标准库保证了标准中定义的自移动赋值的某些行为。
具体来说,标准规定,对于标准库中参数类型为 T&& 的函数,实现可能会假设参数是对该参数的唯一引用。这意味着标准库可以基于参数是临时右值的假设来优化其行为。
在自移动赋值的情况下,允许实现假设参数向量是纯右值。这意味着标准库可能会执行如果参数是左值则不可能进行的优化。
因此,标准库中的自移动分配可能会导致向量留在资源中-less 状态,容量为 0。如果向量的容量已经为 0,则自移动分配将是无操作。
更新
C 标准的最新草案明确指出,在 MoveAssignable 要求中,表达式 t = rv(其中 rv 是右值)仅要求在赋值之前 t 与 rv 相等(如果 t 和 rv 不引用同一对象)。此外,赋值后 rv 的状态是未指定的。
以上是C 标准库中向量的自移动分配有何影响?的详细内容。更多信息请关注PHP中文网其他相关文章!