From 184d2f08027933d4eeff97d662528a5223cea18b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=C3=89milie=20Feral?= Date: Thu, 28 Feb 2019 14:50:19 +0100 Subject: [PATCH] [shared] ExpiringPointer: add constructor to enable pointer casting --- apps/shared/expiring_pointer.h | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/apps/shared/expiring_pointer.h b/apps/shared/expiring_pointer.h index 85642ef02..699e47939 100644 --- a/apps/shared/expiring_pointer.h +++ b/apps/shared/expiring_pointer.h @@ -7,12 +7,21 @@ namespace Shared { template class ExpiringPointer { + template + friend class ExpiringPointer; public: ExpiringPointer(T * rawPointer, bool reinitGlobal = true) : m_rawPointer(rawPointer) { #if DEBUG s_global = rawPointer; #endif } + template + ExpiringPointer(ExpiringPointer p) : m_rawPointer(static_cast(p.m_rawPointer)) { +#if DEBUG + s_global = m_rawPointer; +#endif + } + bool isNull() { return m_rawPointer == nullptr; } T *operator->() { #if DEBUG assert(m_rawPointer != nullptr && m_rawPointer == s_global);