diff --git a/src/global_resource.cpp b/src/global_resource.cpp index bd8cc0d..b3fa761 100644 --- a/src/global_resource.cpp +++ b/src/global_resource.cpp @@ -127,17 +127,19 @@ namespace boost { namespace container { namespace pmr { -static std::atomic default_memory_resource = - ATOMIC_VAR_INIT(&boost::container::dtl::singleton_default::instance()); +std::atomic& default_memory_resource_instance() { + static std::atomic instance = new_delete_resource(); + return instance; +} BOOST_CONTAINER_DECL memory_resource* set_default_resource(memory_resource* r) BOOST_NOEXCEPT { 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 -{ return default_memory_resource.load(std::memory_order_acquire); } +{ return default_memory_resource_instance().load(std::memory_order_acquire); } #endif