Re: CoW and reference counting in the STL
On 16 Apr., 00:33, red floyd <redfl...@gmail.com> wrote:
On Apr 14, 4:38 pm, Daniel Kr?gler <daniel.krueg...@googlemail.com>
wrote:
[..]
Yes, this is a valid implementation technique for C++03,
but no longer valid for C++0x. Todays implementations often
take advantage of the small-string optimization, though.
Why is CoW no longer valid for C++0x? Is it due to move semantics?
The problem is, that the interface of basic_string
is not very well-designed for effective CoW implementations
(basically too many functions that would need to "unshare"
the string) and the fact that it looks like other
containers, but with very different invalidation
characteristics for iterator, references, and pointers.
This has lead to the observation that such a class
would be both too fragile for normal users and
would also prevent efficient usage of such a
fundamental class in multi-threaded code.
For more details I recommend to read the rationale
given in
http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2008/n2534.html
http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2008/n2647.html
HTH & Greetings from Bremen,
Daniel Kr?gler
--
[ See http://www.gotw.ca/resources/clcm.htm for info about ]
[ comp.lang.c++.moderated. First time posters: Do this! ]