-
- Downloads
libstdc++: Fix missing members in std::allocator<void>
The changes in 75c6a925 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.
Showing
- libstdc++-v3/include/bits/allocator.h 34 additions, 10 deletionslibstdc++-v3/include/bits/allocator.h
- libstdc++-v3/include/bits/memoryfwd.h 4 additions, 3 deletionslibstdc++-v3/include/bits/memoryfwd.h
- libstdc++-v3/include/ext/malloc_allocator.h 7 additions, 1 deletionlibstdc++-v3/include/ext/malloc_allocator.h
- libstdc++-v3/include/ext/new_allocator.h 7 additions, 1 deletionlibstdc++-v3/include/ext/new_allocator.h
- libstdc++-v3/testsuite/20_util/allocator/void.cc 36 additions, 4 deletionslibstdc++-v3/testsuite/20_util/allocator/void.cc
Loading
Please register or sign in to comment