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中文網其他相關文章!