11 std::atomic_store(&
ptr_, std::move(p));
16 std::atomic_store(&
ptr_, std::atomic_load(&other.
ptr_));
20 std::atomic_store(&
ptr_, std::atomic_load(&other.
ptr_));
27 auto p = std::atomic_load(&other.ptr_);
28 std::atomic_store(&
ptr_, std::move(p));
29 std::atomic_store(&other.ptr_, std::shared_ptr<T>{});
33 std::atomic_store(&
ptr_, std::atomic_load(&other.ptr_));
34 std::atomic_store(&other.ptr_, std::shared_ptr<T>{});
43 auto old = std::atomic_exchange(&
ptr_, std::move(p));
51 std::shared_ptr<T>
get()
const {
52 return std::atomic_load(&
ptr_);
SmartAtomicPtr(const SmartAtomicPtr &other)
void update(std::shared_ptr< T > p)
SmartAtomicPtr(SmartAtomicPtr &&other) noexcept
SmartAtomicPtr & operator=(const SmartAtomicPtr &other)
SmartAtomicPtr & operator=(SmartAtomicPtr &&other) noexcept
SmartAtomicPtr(std::shared_ptr< T > p)
std::shared_ptr< T > ptr_
~SmartAtomicPtr()=default