Merge pull request #232 from georgthegreat/patch-1

Fix using pmr::polymorphic_allocator in pre-main
This commit is contained in:
Ion Gaztañaga
2022-12-11 18:45:37 +01:00
committed by GitHub

View File

@@ -127,17 +127,19 @@ namespace boost {
namespace container { namespace container {
namespace pmr { namespace pmr {
static std::atomic<memory_resource*> default_memory_resource = std::atomic<memory_resource*>& default_memory_resource_instance() {
ATOMIC_VAR_INIT(&boost::container::dtl::singleton_default<new_delete_resource_imp>::instance()); static std::atomic<memory_resource*> instance = new_delete_resource();
return instance;
}
BOOST_CONTAINER_DECL memory_resource* set_default_resource(memory_resource* r) BOOST_NOEXCEPT BOOST_CONTAINER_DECL memory_resource* set_default_resource(memory_resource* r) BOOST_NOEXCEPT
{ {
memory_resource *const res = r ? r : new_delete_resource(); memory_resource *const res = r ? r : new_delete_resource();
return default_memory_resource.exchange(res, std::memory_order_acq_rel); return default_memory_resource_instance().exchange(res, std::memory_order_acq_rel);
} }
BOOST_CONTAINER_DECL memory_resource* get_default_resource() BOOST_NOEXCEPT BOOST_CONTAINER_DECL memory_resource* get_default_resource() BOOST_NOEXCEPT
{ return default_memory_resource.load(std::memory_order_acquire); } { return default_memory_resource_instance().load(std::memory_order_acquire); }
#endif #endif