r277410 - in /trunk/libstdc++-v3: ChangeLog inc...

redi@gcc.gnu.org redi@gcc.gnu.org
Thu Oct 24 15:29:00 GMT 2019


Author: redi
Date: Thu Oct 24 15:29:41 2019
New Revision: 277410

URL: https://gcc.gnu.org/viewcvs?rev=277410&root=gcc&view=rev
Log:
Revert ABI changes to std::allocator in C++20

The recent C++20 changes to remove the std::allocator<void> explicit
specialization and the destructor in the std::allocator primary template
change the result of some is_trivially_xxx type traits. To avoid those
changes, this patch restores the explicit specialization and the
destructor.

In order to meet the C++20 requirements the std::allocator<void>
explicit specialization must provide the same interface as the primary
template (except for the unusable allocate and deallocate member
functions) and the destructor in the primary template must be constexpr.

	* include/bits/allocator.h (allocator<void>): Restore the explicit
	specialization for C++20, but make its API consistent with the primary
	template.
	(allocator::~allocator()): Restore the destructor for C++20, but make
	it constexpr.
	* testsuite/20_util/allocator/rebind_c++20.cc: Check allocator<void>.
	* testsuite/20_util/allocator/requirements/typedefs_c++20.cc: Likewise.
	* testsuite/20_util/allocator/void.cc: Check that constructors and
	destructors are trivial. Check for converting constructor in C++20.
	* testsuite/ext/malloc_allocator/variadic_construct.cc: Simplify
	dejagnu target selector.
	* testsuite/ext/new_allocator/variadic_construct.cc: Likewise.

Modified:
    trunk/libstdc++-v3/ChangeLog
    trunk/libstdc++-v3/include/bits/allocator.h
    trunk/libstdc++-v3/testsuite/20_util/allocator/rebind_c++20.cc
    trunk/libstdc++-v3/testsuite/20_util/allocator/requirements/typedefs_c++20.cc
    trunk/libstdc++-v3/testsuite/20_util/allocator/void.cc
    trunk/libstdc++-v3/testsuite/ext/malloc_allocator/variadic_construct.cc
    trunk/libstdc++-v3/testsuite/ext/new_allocator/variadic_construct.cc



More information about the Gcc-cvs mailing list