void intrusive_ptr_release(actor_control_block* x) {
  // release implicit weak pointer if the last strong ref expires
  // and destroy the data block
  if (x->strong_refs.fetch_sub(1, std::memory_order_acq_rel) == 1) {
    x->data_dtor(x->get());
    intrusive_ptr_release_weak(x);
  }
}
 void reset(pointer new_value = nullptr, bool add_ref = true) {
   auto old = ptr_;
   set_ptr(new_value, add_ref);
   if (old)
     intrusive_ptr_release_weak(old);
 }
 ~weak_intrusive_ptr() {
   if (ptr_)
     intrusive_ptr_release_weak(ptr_);
 }