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
This commit is contained in:
Vadim Zeitlin 2008-02-27 18:12:29 +00:00
parent 3dce337969
commit 7005cf4407
2 changed files with 23 additions and 5 deletions

View File

@ -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 */
/* ---------------------------------------------------------------------------- */

View File

@ -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<class T,bool use_static>
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 T>
class wxWeakRef : public
#ifdef HAVE_PARTIAL_SPECIALIZATION
wxWeakRefImpl<T, wxIsStaticTrackable<T>::value>
#else
#ifdef USE_STATIC_WEAKREF
wxWeakRefStatic<T>
#else
wxWeakRefImpl<T, wxIsStaticTrackable<T>::value>
#endif
{
public: