aboutsummaryrefslogtreecommitdiffhomepage
path: root/tdutils/td/utils/SharedObjectPool.h
diff options
context:
space:
mode:
authorArseny Smirnov <arseny30@gmail.com>2020-06-24 14:47:36 +0300
committerArseny Smirnov <arseny30@gmail.com>2020-06-24 14:47:36 +0300
commitfd6423dedf2c2055d124850fc188fa9aaa95ff1c (patch)
tree8fcee633e22ca4f799a045a845987d67909e587e /tdutils/td/utils/SharedObjectPool.h
parente8ac30cbbf8699815895f0c38e1fb21282e7d0c5 (diff)
update tdutils from another project
GitOrigin-RevId: 79b8eb2ba229d733f82dbb17b8bd7f27471c9472
Diffstat (limited to 'tdutils/td/utils/SharedObjectPool.h')
-rw-r--r--tdutils/td/utils/SharedObjectPool.h7
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) {