我的理解是,写时复制并不是实现一致性的可行方法。std::string
在 C++11 中,但当最近在讨论中出现时,我发现自己无法直接支持该声明。
我是否正确,C++11 不承认基于 COW 的实现std::string
?
如果是这样,这个限制是否在新标准的某个地方(哪里)明确规定?
或者说这种限制是隐含的,因为它是新要求的综合影响std::string
这排除了基于 COW 的实现std::string
。在这种情况下,我对“C++11 有效禁止基于 COW”的章节风格推导感兴趣std::string
实施”。
这是不允许的,因为根据标准 21.4.1 p6,迭代器/引用的失效只允许
- 作为任何标准库函数的参数进行引用
以非常量 basic_string 作为参数。
— 调用非常量
成员函数,除了operator[]、at、front、back、begin、rbegin、
结束,并撕裂。
对于 COW 字符串,调用非常量operator[]
需要制作一份副本(并使参考资料无效),这是上一段所不允许的。因此,在 C++11 中使用 COW 字符串不再合法。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)