Fix build with Borland C++ compiler.
Disable some parts of the code that this compiler had problems with. Add parentheses to work around its bugs elsewhere. Closes #12558. git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@66054 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
This commit is contained in:
@@ -30,18 +30,28 @@
|
||||
namespace wxPrivate
|
||||
{
|
||||
|
||||
// Helper macro to define a constant inside a template class: it's needed
|
||||
// because MSVC6 doesn't support initializing static integer members but the
|
||||
// usual workaround of using enums instead doesn't work for Borland (at least
|
||||
// in template classes).
|
||||
#ifdef __VISUALC6__
|
||||
#define wxDEFINE_CLASS_INT_CONST(name, value) enum { name = value }
|
||||
#else
|
||||
#define wxDEFINE_CLASS_INT_CONST(name, value) static const int name = value
|
||||
#endif
|
||||
|
||||
template<typename T>
|
||||
struct TypeHierarchy
|
||||
{
|
||||
// consider unknown types (e.g. objects, pointers) to be of highest
|
||||
// level, always convert to them if they occur
|
||||
enum { level = 9999 };
|
||||
wxDEFINE_CLASS_INT_CONST( level, 9999 );
|
||||
};
|
||||
|
||||
#define WX_TYPE_HIERARCHY_LEVEL(level_num, type) \
|
||||
template<> struct TypeHierarchy<type> \
|
||||
{ \
|
||||
enum { level = level_num }; \
|
||||
wxDEFINE_CLASS_INT_CONST( level, level_num ); \
|
||||
}
|
||||
|
||||
WX_TYPE_HIERARCHY_LEVEL( 1, char);
|
||||
@@ -84,7 +94,7 @@ struct wxImplicitConversionType
|
||||
typedef typename wxIf
|
||||
<
|
||||
// if T2 is "higher" type, convert to it
|
||||
(int)wxPrivate::TypeHierarchy<T1>::level < (int)wxPrivate::TypeHierarchy<T2>::level,
|
||||
(int)(wxPrivate::TypeHierarchy<T1>::level) < (int)(wxPrivate::TypeHierarchy<T2>::level),
|
||||
T2,
|
||||
// otherwise use T1
|
||||
T1
|
||||
|
Reference in New Issue
Block a user