On Mon, 23 Sep 2013, Paolo Carlini wrote:

Hi again,
It is funny that with fully dynamic strings, the copy constructor is "better" than the move constructor: faster, doesn't throw, etc. I think we should remove the move constructor in that case, or at least make it act the same as the copy constructor. I didn't mark the copy constructor as noexcept, but without checking the code it seems likely we could.

I took a look at the code. First I got a headache because of the allocator stuff. And once the paracetamol started helping, I noticed that the is_leaked mechanism means it can throw anyway, so I was wrong.

We could, but in my opinion fiddling with those isn't worth the trouble, because the whole "fully dynamic string" thing is just a workaround for issues of the current reference counted implementation vs the statically allocated empty string on some targets.
Well, I have a second (practical) thought about this part. If you are willing to spend a little more time on this, and can confirm your preliminary analysis about copy-constructor vs move-constructor, first blush it definitely makes sense to me, I'm certainly not against your proposal of having the move-constructor identical to the copy-constructor in that case. In 4.9.x some targets, not Linux, would benefit from it.

Sorry.

--
Marc Glisse

Reply via email to