C 11 中 COW std::string 实现的合法性
在早期版本的 C 中,写时复制 (COW) 是std::string 的可行实施策略。然而,人们对其在 C 11 中的有效性提出了担忧。本文研究了 C 11 中基于 COW 的 std::string 实现的合法性。
问题: C 11 是否明确禁止基于 COW 的 std::string 实现?
答案: 不,C 11 没有明确规定禁止基于 COW 的实现。
问题:如果没有,这个限制是如何隐含的?
答案:该限制源于 C 11 中有关迭代器和引用失效的新要求。根据标准第 21.4.1 p6 节,仅在特定情况下允许无效:
在 COW 字符串实现中,调用非常量运算符 [] 将需要复制和引用失效。然而,上述段落禁止这样做。因此,C 11 中不再允许使用 COW std::string 实现。
以上是std::string 的写时复制实现在 C 11 中合法吗?的详细内容。更多信息请关注PHP中文网其他相关文章!