
From: "Reece Dunn" <msclrhd@hotmail.com>
John Nagle wrote:
Reece Dunn wrote:
John Nagle wrote: The problems arise in the interation with basic_string_impl and how to implement swap and functions that require constructing a string object. Why do you need to construct a string object to swap? Just swap one character at a time.
[2] How do I implement the swap function? The solution I arrived at is the one you suggest: to swap the data character-by-character. What you have to
Unfortunately, that makes swap() O(N), but it does allow it to be nothrow.
consider when doing this is that the strings don't exceed capacity, resulting in additional logic.
That should fail, shouldn't it? Yes, that would mean a swap() that throws, but the strings aren't really swapped if you only swap some characters. I'm not sure which is worse: a swap() that throws or only partially swapping. The former violates exception safety guarantee assumptions made by other code, but the latter means that swap() may not really swap, which violates semantics. -- Rob Stewart stewart@sig.com Software Engineer http://www.sig.com Susquehanna International Group, LLP using std::disclaimer;