PR libstdc++/70966 make pmr::new_delete_resource() immortal
commitdc992be21047a4c456b7a757d323534f694c6dbe
authorredi <redi@138bc75d-0d04-0410-961f-82ee72b054a4>
Wed, 20 Jun 2018 19:34:53 +0000 (20 19:34 +0000)
committerredi <redi@138bc75d-0d04-0410-961f-82ee72b054a4>
Wed, 20 Jun 2018 19:34:53 +0000 (20 19:34 +0000)
tree48fbab8f2d64a4655d84cfcf5ba470a5926751bd
parent77de2054684ceffa636be74b9918a9c5edc4d8f5
PR libstdc++/70966 make pmr::new_delete_resource() immortal

Construct the program-wide resource objects using placement new. This
means they have dynamic storage duration and won't be destroyed during
termination.

PR libstdc++/70966
* include/experimental/memory_resource (__resource_adaptor_imp): Add
static assertions to enforce requirements on pointer types.
(__resource_adaptor_imp::get_allocator()): Add noexcept.
(new_delete_resource, null_memory_resource): Return address of an
object with dynamic storage duration.
(__null_memory_resource): Remove.
* testsuite/experimental/memory_resource/70966.cc: New.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@261818 138bc75d-0d04-0410-961f-82ee72b054a4
libstdc++-v3/ChangeLog
libstdc++-v3/include/experimental/memory_resource
libstdc++-v3/testsuite/experimental/memory_resource/70966.cc [new file with mode: 0644]