
At 03:46 PM 10/20/2004, Peter Dimov wrote:
The iterators used are bidirectional, not random access (impossible on UTF-8 and UTF-16) and they are as of now not constant. It IS possible to assign a code unit to a UTF-8 encoded string through an iterator, even if the resulting code unit sequence would be longer than the one the iterator is pointing to. The underlying container is automatically resized to make room for the new sequence. (This is of course slow!)
This is another basic_string mistake that effectively rules out efficient
reference counting. ;-) Just make the iterators constant. The functionality can be obtained with explicit erase/insert/replace members.
There are additional advantages to a constant iterator and explicit erase/insert/replace design; various caching and disk-residence implementations become both possible and efficient. --Beman