diff options
| author | Arseny Smirnov <arseny30@gmail.com> | 2020-06-24 14:47:36 +0300 |
|---|---|---|
| committer | Arseny Smirnov <arseny30@gmail.com> | 2020-06-24 14:47:36 +0300 |
| commit | fd6423dedf2c2055d124850fc188fa9aaa95ff1c (patch) | |
| tree | 8fcee633e22ca4f799a045a845987d67909e587e /tdutils/td/utils/SharedObjectPool.h | |
| parent | e8ac30cbbf8699815895f0c38e1fb21282e7d0c5 (diff) | |
update tdutils from another project
GitOrigin-RevId: 79b8eb2ba229d733f82dbb17b8bd7f27471c9472
Diffstat (limited to 'tdutils/td/utils/SharedObjectPool.h')
| -rw-r--r-- | tdutils/td/utils/SharedObjectPool.h | 7 |
1 files changed, 4 insertions, 3 deletions
diff --git a/tdutils/td/utils/SharedObjectPool.h b/tdutils/td/utils/SharedObjectPool.h index 8dd9e24a4..b054cbcb2 100644 --- a/tdutils/td/utils/SharedObjectPool.h +++ b/tdutils/td/utils/SharedObjectPool.h @@ -37,9 +37,7 @@ class AtomicRefCnt { }; template <class DataT, class DeleterT> -class SharedPtrRaw - : public DeleterT - , private MpscLinkQueueImpl::Node { +class SharedPtrRaw : public DeleterT, private MpscLinkQueueImpl::Node { public: explicit SharedPtrRaw(DeleterT deleter) : DeleterT(std::move(deleter)), ref_cnt_{0}, option_magic_(Magic) { } @@ -88,6 +86,7 @@ template <class T, class DeleterT = std::default_delete<T>> class SharedPtr { public: using Raw = detail::SharedPtrRaw<T, DeleterT>; + struct acquire_t {}; SharedPtr() = default; ~SharedPtr() { if (!raw_) { @@ -100,6 +99,8 @@ class SharedPtr { raw_->inc(); } } + SharedPtr(acquire_t, Raw *raw) : raw_(raw) { + } SharedPtr(const SharedPtr &other) : SharedPtr(other.raw_) { } SharedPtr &operator=(const SharedPtr &other) { |
