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:
@@ -472,6 +472,18 @@ typedef short int WXTYPE;
|
|||||||
#endif
|
#endif
|
||||||
#endif // __VISUALC__
|
#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 */
|
/* portable calling conventions macros */
|
||||||
/* ---------------------------------------------------------------------------- */
|
/* ---------------------------------------------------------------------------- */
|
||||||
|
@@ -74,8 +74,13 @@ protected:
|
|||||||
T *m_pobj;
|
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>
|
template<class T,bool use_static>
|
||||||
struct wxWeakRefImpl;
|
struct wxWeakRefImpl;
|
||||||
|
|
||||||
@@ -169,17 +174,18 @@ protected:
|
|||||||
wxTrackable *m_ptbase;
|
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
|
// A weak reference to an object of type T, where T has type wxTrackable
|
||||||
// (usually statically but if not dynamic_cast<> is tried).
|
// (usually statically but if not dynamic_cast<> is tried).
|
||||||
template <class T>
|
template <class T>
|
||||||
class wxWeakRef : public
|
class wxWeakRef : public
|
||||||
#ifdef HAVE_PARTIAL_SPECIALIZATION
|
#ifdef USE_STATIC_WEAKREF
|
||||||
wxWeakRefImpl<T, wxIsStaticTrackable<T>::value>
|
|
||||||
#else
|
|
||||||
wxWeakRefStatic<T>
|
wxWeakRefStatic<T>
|
||||||
|
#else
|
||||||
|
wxWeakRefImpl<T, wxIsStaticTrackable<T>::value>
|
||||||
#endif
|
#endif
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
|
Reference in New Issue
Block a user