On 03/02/23 15:50, Jonathan Wakely wrote:
On Wed, 25 Jan 2023 at 18:38, François Dumont <frs.dum...@gmail.com> wrote:
Let's submit a proper patch proposal then.

The occasion for me to ask if there is any reason for cow string not
being C++11 allocator compliant ? Just lack of interest ?
Mostly lack of interest, but also I don't really want to "encourage"
the use of the old string by investing lots of maintenance effort into
it. If you want new features like C++11 Allocators and
resize_and_overwrite etc then you should use the new type.

I don't remember if there were any actual blockers that made it
difficult to support stateful allocators in the COW string. I might
have written something about it in mails to the list when I was adding
the SSO string, but I don't remember now.

Ok, thanks for feedback. I won't bother then.


Anyway, for this patch ...

I wanted to consider it to get rid of the __gnu_debug::_Safe_container
_IsCxx11AllocatorAware template parameter.

      libstdc++: Optimize basic_string move assignment

      Since resolution of Issue 2593 [1] we can consider that equal
allocators
      before the propagate-on-move-assignment operations will still be equal
      afterward.

      So we can extend the optimization of transfering the storage of the
move-to
      instance to the move-from one that is currently limited to always equal
      allocators.

      [1] https://cplusplus.github.io/LWG/issue2593

      libstdc++-v3/ChangeLog:

              * include/bits/basic_string.h (operator=(basic_string&&)):
Transfer move-to
              storage to the move-from instance when allocators are equal.
              *
testsuite/21_strings/basic_string/allocator/char/move_assign.cc (test04):
              New test case.

Tested under linux x86_64, ok to commit ?
OK for trunk, thanks!

+Reviewed-by: Jonathan Wakely <jwak...@redhat.com>

Should I have added this to the commit ?

If so sorry, I haven't.

Reply via email to