24 #ifndef SEASTAR_MODULE
26 #include <boost/intrusive/list.hpp>
27 #include <seastar/util/modules.hh>
50 using hook_type = boost::intrusive::list_member_hook<boost::intrusive::link_mode<boost::intrusive::auto_unlink>>;
54 void clear() noexcept {
59 _hook.swap_nodes(o._hook);
60 std::swap(_ptr, o._ptr);
75 swap(o._ptr->weak_from_this());
89 swap(o._ptr->weak_from_this());
94 explicit operator bool()
const noexcept {
return _ptr !=
nullptr; }
95 T* operator->()
const noexcept {
return _ptr; }
96 T& operator*()
const noexcept {
return *_ptr; }
97 T* get()
const noexcept {
return _ptr; }
98 bool operator==(
const weak_ptr& o)
const noexcept {
return _ptr == o._ptr; }
99 bool operator!=(
const weak_ptr& o)
const noexcept {
return _ptr != o._ptr; }
121 boost::intrusive::list<weak_ptr<T>,
122 boost::intrusive::member_hook<weak_ptr<T>,
typename weak_ptr<T>::hook_type, &
weak_ptr<T>::_hook>,
123 boost::intrusive::constant_time_size<false>> _ptr_list;
133 _ptr_list.clear_and_dispose([] (
weak_ptr<T>* wp) noexcept {
139 _ptr_list.push_back(ptr);
Definition: weak_ptr.hh:46
Definition: weak_ptr.hh:120
Seastar API namespace.
Definition: abort_on_ebadf.hh:26