summaryrefslogtreecommitdiffstats
path: root/Common/interface
diff options
context:
space:
mode:
Diffstat (limited to 'Common/interface')
-rw-r--r--Common/interface/RefCntAutoPtr.hpp9
1 files changed, 7 insertions, 2 deletions
diff --git a/Common/interface/RefCntAutoPtr.hpp b/Common/interface/RefCntAutoPtr.hpp
index 64ebe93a..7cf13e15 100644
--- a/Common/interface/RefCntAutoPtr.hpp
+++ b/Common/interface/RefCntAutoPtr.hpp
@@ -284,8 +284,13 @@ public:
return DoublePtrHelper(*this);
}
- T** GetRawDblPtr() { return &m_pObject; }
- const T** GetRawDblPtr() const { return &m_pObject; }
+ T** GetRawDblPtr() noexcept { return &m_pObject; }
+ const T** GetRawDblPtr() const noexcept { return &m_pObject; }
+
+ template <typename DstType, typename = typename std::enable_if<std::is_convertible<T*, DstType*>::value>::type>
+ DstType** GetRawDblPtr() noexcept { return reinterpret_cast<DstType**>(&m_pObject); }
+ template <typename DstType, typename = typename std::enable_if<std::is_convertible<T*, DstType*>::value>::type>
+ DstType** GetRawDblPtr() const noexcept { return reinterpret_cast<DstType**>(&m_pObject); }
private:
template <typename OtherType>