From 7005cf44074091dfaadeab9fdc1920d9f128a70f Mon Sep 17 00:00:00 2001 From: Vadim Zeitlin Date: Wed, 27 Feb 2008 18:12:29 +0000 Subject: [PATCH] fix wxWeakRef<> for Borland C++ (slightly modified patch 1902415) git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@52155 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775 --- include/wx/defs.h | 12 ++++++++++++ include/wx/weakref.h | 16 +++++++++++----- 2 files changed, 23 insertions(+), 5 deletions(-) diff --git a/include/wx/defs.h b/include/wx/defs.h index 24ec7619bb..2c8e1c5a12 100644 --- a/include/wx/defs.h +++ b/include/wx/defs.h @@ -472,6 +472,18 @@ typedef short int WXTYPE; #endif #endif // __VISUALC__ + +#ifndef HAVE_TEMPLATE_OVERLOAD_RESOLUTION + // assume the compiler can use type or const expressions as template + // arguments if it supports partial specialization -- except if it's a + // Borland one which can't + #ifdef HAVE_PARTIAL_SPECIALIZATION && !defined(__BORLANDC__) + #define HAVE_TEMPLATE_OVERLOAD_RESOLUTION + #endif +#endif // __BORLANDC__ + +#endif // !defined(HAVE_TEMPLATE_OVERLOAD_RESOLUTION) + /* ---------------------------------------------------------------------------- */ /* portable calling conventions macros */ /* ---------------------------------------------------------------------------- */ diff --git a/include/wx/weakref.h b/include/wx/weakref.h index 9ae506798b..d72ab4ccbc 100644 --- a/include/wx/weakref.h +++ b/include/wx/weakref.h @@ -74,8 +74,13 @@ protected: T *m_pobj; }; -#ifdef HAVE_PARTIAL_SPECIALIZATION +#if !defined(HAVE_PARTIAL_SPECIALIZATION) || !defined(HAVE_TEMPLATE_OVERLOAD_RESOLUTION) + #define USE_STATIC_WEAKREF +#endif + + +#ifndef USE_STATIC_WEAKREF template struct wxWeakRefImpl; @@ -169,17 +174,18 @@ protected: wxTrackable *m_ptbase; }; -#endif // HAVE_PARTIAL_SPECIALIZATION +#endif // #ifndef USE_STATIC_WEAKREF + // A weak reference to an object of type T, where T has type wxTrackable // (usually statically but if not dynamic_cast<> is tried). template class wxWeakRef : public -#ifdef HAVE_PARTIAL_SPECIALIZATION - wxWeakRefImpl::value> -#else +#ifdef USE_STATIC_WEAKREF wxWeakRefStatic +#else + wxWeakRefImpl::value> #endif { public: -- 2.45.2