http://gcc.gnu.org/bugzilla/show_bug.cgi?id=52938

--- Comment #14 from Abdul Tohmaz <abdul.tohmaz at emc dot com> 2012-04-13 
13:37:47 UTC ---
(In reply to comment #13)

> Immediately after you call reserve it returns at least 1024.  But not
> necessarily from that point on for ever and ever.  If you call swap() to
> exchange it with another string it's capacity could shrink, or in C++11 if you
> move assign another string to it its capacity could change. Or, in C++03 for
> reference-counted strings, it could change because the previously-shared 
> string
> is no longer shared.
> 
> This is a pointless discussion anyway, it's not going to change.

I agree with you on this discussion being pointless.
I am looking at this from the end user perspective and what the standards
dictates while you are looking at from the way gcc implements string.  Your
point about C++11 doesn't apply here (completely different ball game).  The
standard doesn't say anything about capacity for swap (21.3.5.8).  The user
expects the standard to be followed and when it says that capacity to be >= to
the reserve argument, he certainly expects that.  Unless you can show me
somewhere in the standards where it says the requested capacity via reserve
calls may be affected by copy constructor in the case an implementer chose to
use copy-on-write.  That is all I ask.

Reply via email to