inline void destroy_deallocate(const Tx tx, Alloc& alloc, typename AllocTraits::pointer ptr) { tx.sometime_synchronized_after([ alloc, ptr = std::move(ptr) ]() mutable noexcept { AllocTraits::destroy(alloc, detail::to_raw_pointer(ptr)); AllocTraits::deallocate(alloc, std::move(ptr), 1); }); }
inline void deallocate(const Tx tx, Alloc& alloc, typename AllocTraits::pointer ptr, const std::size_t count) { tx.sometime_synchronized_after([ alloc, ptr = std::move(ptr), count ]() mutable noexcept { AllocTraits::deallocate(alloc, std::move(ptr), count); }); }
inline void destroy(const Tx tx, Alloc& alloc, T* t) { tx.sometime_synchronized_after( [ alloc, t ]() mutable noexcept { AllocTraits::destroy(alloc, t); }); }