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

--- Comment #3 from CVS 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:162c40a4c127cc55d701bb8760e17708d0ca2fe0

commit r10-8021-g162c40a4c127cc55d701bb8760e17708d0ca2fe0
Author: Jonathan Wakely <jwak...@redhat.com>
Date:   Tue Apr 28 23:26:21 2020 +0100

    libstdc++: Fix regression in std::_Construct (PR 94831)

    By trying to reuse the existing std::_Construct function as a wrapper
    for std::construct_at I introduced regressions, because changing
    std::_Construct to return non-void made it ill-formed for array types.

    The solution is to revert _Construct to its former state, and change
    allocator_traits::construct to explicitly call construct_at instead.
    This decouples all the existing callers of _Construct from the new
    construct_at requirements.

            PR libstdc++/94831
            * include/bits/alloc_traits.h (_S_construct): Restore placement
            new-expression for C++11/14/17 and call std::construct_at directly
            for C++20.
            * include/bits/stl_construct.h (_Construct): Revert to
non-constexpr
            function returning void.
            * testsuite/20_util/specialized_algorithms/
            uninitialized_value_construct/94831.cc: New test.
            * testsuite/23_containers/vector/cons/94831.cc: New test.

Reply via email to