From 98ef4239a6b859522a45bdd03ba5496ea201e5f3 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?J=C3=BCri=20Valdmann?= Date: Tue, 17 Apr 2018 10:15:43 +0200 Subject: Support std::unique_ptr and others in Q_DECLARE_PRIVATE Use ptr.operator->() instead of ptr.data() for getting the raw pointer. [ChangeLog][QtCore][QtGlobal] Q_DECLARE_PRIVATE can now be used with std::unique_ptr and other smart pointer types. Change-Id: I7f3f698d7bac477f2185837681e366057d292588 Reviewed-by: Thiago Macieira --- src/corelib/global/qglobal.h | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) (limited to 'src/corelib') diff --git a/src/corelib/global/qglobal.h b/src/corelib/global/qglobal.h index e31d4d9ad7..055fe6f40a 100644 --- a/src/corelib/global/qglobal.h +++ b/src/corelib/global/qglobal.h @@ -1034,8 +1034,8 @@ for (auto _container_ = QtPrivate::qMakeForeachContainer(container); \ # endif #endif -template static inline T *qGetPtrHelper(T *ptr) { return ptr; } -template static inline typename Wrapper::pointer qGetPtrHelper(const Wrapper &p) { return p.data(); } +template inline T *qGetPtrHelper(T *ptr) { return ptr; } +template inline auto qGetPtrHelper(const Ptr &ptr) -> decltype(ptr.operator->()) { return ptr.operator->(); } #define Q_DECLARE_PRIVATE(Class) \ inline Class##Private* d_func() { return reinterpret_cast(qGetPtrHelper(d_ptr)); } \ -- cgit v1.2.3