compilation fixes for g++ 3.2 (closes #10875)
[wxWidgets.git] / include / wx / meta / convertible.h
1 /////////////////////////////////////////////////////////////////////////////
2 // Name: wx/meta/convertible.h
3 // Purpose: Test if types are convertible
4 // Author: Arne Steinarson
5 // Created: 2008-01-10
6 // RCS-ID: $Id$
7 // Copyright: (c) 2008 Arne Steinarson
8 // Licence: wxWindows licence
9 /////////////////////////////////////////////////////////////////////////////
10
11 #ifndef _WX_META_CONVERTIBLE_H_
12 #define _WX_META_CONVERTIBLE_H_
13
14 //
15 // Introduce an extra class to make this header compilable with g++3.2
16 //
17 template <class D, class B>
18 struct wxConvertibleTo_SizeHelper
19 {
20 static char Match(B* pb);
21 static int Match(...);
22 };
23
24 // Helper to decide if an object of type D is convertible to type B (the test
25 // succeeds in particular when D derives from B)
26 template <class D, class B>
27 struct wxConvertibleTo
28 {
29 enum { value = sizeof(wxConvertibleTo_SizeHelper<D,B>::Match(static_cast<D*>(NULL)))==sizeof(char)
30 };
31 };
32
33 #endif // _WX_META_CONVERTIBLE_H_
34