https://gcc.gnu.org/bugzilla/show_bug.cgi?id=120397

--- Comment #5 from GCC Commits <cvs-commit at gcc dot gnu.org> ---
The master branch has been updated by Jonathan Wakely <r...@gcc.gnu.org>:

https://gcc.gnu.org/g:3af71d4ac80751afc2f0ef7efdeb07dc18155689

commit r16-1504-g3af71d4ac80751afc2f0ef7efdeb07dc18155689
Author: Jonathan Wakely <jwak...@redhat.com>
Date:   Thu May 22 15:42:45 2025 +0100

    libstdc++: Fix std::uninitialized_value_construct for arrays [PR120397]

    The std::uninitialized_{value,default}_construct{,_n} algorithms should
    be able to create arrays, but that currently fails because when an
    exception happens they clean up using std::_Destroy and in C++17 that
    doesn't support destroying arrays. (For C++20 and later, std::destroy
    does handle destroying arrays.)

    This commit adjusts the _UninitDestroyGuard RAII type used by those
    algos so that in C++17 mode it recursively destroys each rank of an
    array type, only using std::_Destroy for the last rank when it's
    destroying non-array objects.

    libstdc++-v3/ChangeLog:

            PR libstdc++/120397
            * include/bits/stl_uninitialized.h (_UninitDestroyGuard<I,void>):
            Add new member function _S_destroy and call it from the
            destructor (for C++17 only).
            *
testsuite/20_util/specialized_algorithms/uninitialized_default_construct/120397.cc:
            New test.
            *
testsuite/20_util/specialized_algorithms/uninitialized_value_construct/120397.cc:
            New test.

    Reviewed-by: Tomasz KamiÅski <tkami...@redhat.com>
  • [Bug libstdc++/120397] std::uni... cvs-commit at gcc dot gnu.org via Gcc-bugs

Reply via email to