diff options
Diffstat (limited to 'Common/interface')
| -rw-r--r-- | Common/interface/RefCntAutoPtr.hpp | 9 |
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> |
