On Sat, 27 Oct 2018 at 01:27, Joe Buck <joe.b...@synopsys.com> wrote:
>
> The reason move constructors were introduced was to speed up code in cases 
> where an object
> Is copied and the copy is no longer needed.  It is unfortunate that there may 
> now be code out
> there that relies on accidental properties of library implementations.  It 
> would be best if the
> Implementation is not constrained.  Unless the standard mandates that, after 
> a string is moved,
> the string is empty, the user should only be able to assume that it is in 
> some consistent but
> unspecified state.  Otherwise we pay a performance penalty forever.
>
> If the standard explicitly states that the argument to the move constructor 
> is defined to be
> empty after the call, we're stuck.

It certainly doesn't specify so for an SSO string, so we're not stuck.
On the other hand, we already get
a speed-up, it's just not as much of a speed-up as it can be. What I
really loathe is the potential implementation
divergence; it's all good for the priesthood to refer to the standard
and say "you shouldn't have done that", but
that's, as a good friend of mine provided as a phrasing on a different
manner, spectacularly unhelpful.

Reply via email to