No, what I need is resize. Because if I try to to copy into a range which does not exist, my iterators will throw an exception. No way around that.
Therefore, resize, then copy.
The biggest problem is that resize invalidates iterators, which is frustrating.
Therefore I'm going ahead with the proxy project, to keep communications with iterators and base classes. Thereby I can notify the iterators when doing something that will invalidate them and fix them up.
Code:// Oops! Will throw an exception if buffer is not big enough!
typename StrType::const_iterator vCopyEnd = strSrc.const_begin() + (strSrc.const_end() - vTemp);