diff --git a/include/boost/fiber/future/detail/shared_state_object.hpp b/include/boost/fiber/future/detail/shared_state_object.hpp index 081efc40..dcdafef6 100644 --- a/include/boost/fiber/future/detail/shared_state_object.hpp +++ b/include/boost/fiber/future/detail/shared_state_object.hpp @@ -41,9 +41,10 @@ protected: private: allocator_t alloc_; - static void destroy_( allocator_t & alloc, shared_state_object * p) noexcept { - alloc.destroy( p); - alloc.deallocate( p, 1); + static void destroy_( allocator_t const& alloc, shared_state_object * p) noexcept { + allocator_t a{ alloc }; + a.destroy( p); + a.deallocate( p, 1); } }; diff --git a/include/boost/fiber/future/detail/task_object.hpp b/include/boost/fiber/future/detail/task_object.hpp index 9a2cf516..2229f40b 100644 --- a/include/boost/fiber/future/detail/task_object.hpp +++ b/include/boost/fiber/future/detail/task_object.hpp @@ -79,9 +79,10 @@ private: Fn fn_; allocator_t alloc_; - static void destroy_( allocator_t & alloc, task_object * p) noexcept { - alloc.destroy( p); - alloc.deallocate( p, 1); + static void destroy_( allocator_t const& alloc, task_object * p) noexcept { + allocator_t a{ alloc }; + a.destroy( p); + a.deallocate( p, 1); } }; @@ -139,9 +140,10 @@ private: Fn fn_; allocator_t alloc_; - static void destroy_( allocator_t & alloc, task_object * p) noexcept { - alloc.destroy( p); - alloc.deallocate( p, 1); + static void destroy_( allocator_t const& alloc, task_object * p) noexcept { + allocator_t a{ alloc }; + a.destroy( p); + a.deallocate( p, 1); } };