|
Boost : |
From: Rob Stewart (stewart_at_[hidden])
Date: 2004-06-21 11:15:23
From: "Reece Dunn" <msclrhd_at_[hidden]>
> 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_at_[hidden] Software Engineer http://www.sig.com Susquehanna International Group, LLP using std::disclaimer;
Boost list run by bdawes at acm.org, gregod at cs.rpi.edu, cpdaniel at pacbell.net, john at johnmaddock.co.uk