C 标准库中的自移动分配
在 C 11 中,该标准提供了有关自移动分配的某些保证,特别是在标准内图书馆。让我们研究一下这些保证意味着什么。
根据 C 11 标准第 17.6.4.9 节,在“函数参数”主题下,规定如果函数参数绑定到右值引用参数,则实现可以假设此引用是参数独有的。
这意味着在 std::vector
可能发生的情况是 v 将呈现资源较少(容量为零)。如果 v 的容量已经为零,则此操作将是无操作。
更新:
最新的工作草案 (N4618) 提供了更精确的定义MoveAssignable 要求。它指定表达式 t = rv(其中 rv 是右值)要求 t 仅在赋值之前匹配 rv 的值(如果它们不引用同一对象)。无论如何,rv 的状态在赋值后变得不确定。附加注释提供了进一步的说明:
“rv 仍必须满足使用它的库组件的要求,无论 t 和 rv 是否引用同一对象。”
以上是自移动赋值是否可以与 C 标准库中的'std::vector”一起使用?的详细内容。更多信息请关注PHP中文网其他相关文章!