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

--- Comment #5 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:5e3a1ea3d89d62972e1f036b2ede37a80b880bdf

commit r12-723-g5e3a1ea3d89d62972e1f036b2ede37a80b880bdf
Author: Jonathan Wakely <jwak...@redhat.com>
Date:   Tue May 11 15:01:01 2021 +0100

    libstdc++: Fix missing members in std::allocator<void>

    The changes in 75c6a925dab5b7af9ab47c10906cb0e140261cc2 were slightly
    incorrect, because the converting constructor should be noexcept, and
    the POCMA and is_always_equal traits should still be present in C++20.
    This fixes it, and slightly refactors the preprocessor conditions and
    order of members. Also add comments explaining things.

    The non-standard construct and destroy members added for PR 78052 can be
    private if allocator_traits<allocator<void>> is made a friend.

    libstdc++-v3/ChangeLog:

            * include/bits/allocator.h (allocator<void>) [C++20]: Add
            missing noexcept to constructor. Restore missing POCMA and
            is_always_equal_traits.
            [C++17]: Make construct and destroy members private and
            declare allocator_traits as a friend.
            * include/bits/memoryfwd.h (allocator_traits): Declare.
            * include/ext/malloc_allocator.h (malloc_allocator::allocate):
            Add nodiscard attribute. Add static assertion for LWG 3307.
            * include/ext/new_allocator.h (new_allocator::allocate): Add
            static assertion for LWG 3307.
            * testsuite/20_util/allocator/void.cc: Check that converting
            constructor is noexcept. Check for propagation traits and
            size_type and difference_type. Check that pointer and
            const_pointer are gone in C++20.
  • [Bug libstdc++/78052] [5/6/7 Re... cvs-commit at gcc dot gnu.org via Gcc-bugs

Reply via email to