void ref_counted::deref() noexcept { if (unique()) { request_deletion(false); return; } if (m_rc.fetch_sub(1, std::memory_order_acq_rel) == 1) { request_deletion(true); } }
/** * @brief Decreases reference count by one and calls * @p request_deletion when it drops to zero. */ inline void deref() { if (--m_rc == 0) request_deletion(); }