COW std :: string实现在C 11中的合法性

我的理解是,copy-on-write在C 11中实现一个符合的std :: string不是一个可行的方法,但是当最近讨论的时候,我发现自己无法直接支持那个语句。

我是否纠正C 11不承认基于COW的实现std :: string?

如果是,这个限制是否在新标准(其中)的某处明确说明?

或者是这个限制意味着,在某种意义上,它是新的要求std :: string的组合效应,排除基于COW的std :: string的实现。在这种情况下,我会对’C 11有效地禁止基于COW的std :: string实现’的章节和诗歌风格感兴趣。

这是不允许的,因为根据标准21.4.1 p6,迭代器/引用的无效只允许

— as an argument to any standard library function taking a reference
to non-const basic_string as an argument.

— Calling non-const
member functions, except operator[], at, front, back, begin, rbegin,
end, and rend.

对于COW字符串,调用非const运算符[]将需要进行副本(并使引用无效),这是上面段落不允许的。因此,在C 11中使用COW字符串不再是合法的。

http://stackoverflow.com/questions/12199710/legality-of-cow-stdstring-implementation-in-c11

本站文章除注明转载外,均为本站原创或编译
转载请明显位置注明出处:COW std :: string实现在C 11中的合法性