]> git.saurik.com Git - wxWidgets.git/blob - include/wx/meta/convertible.h
OSX adaptions
[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 // Copyright: (c) 2008 Arne Steinarson
7 // Licence: wxWindows licence
8 /////////////////////////////////////////////////////////////////////////////
9
10 #ifndef _WX_META_CONVERTIBLE_H_
11 #define _WX_META_CONVERTIBLE_H_
12
13 //
14 // Introduce an extra class to make this header compilable with g++3.2
15 //
16 template <class D, class B>
17 struct wxConvertibleTo_SizeHelper
18 {
19 static char Match(B* pb);
20 static int Match(...);
21 };
22
23 // Helper to decide if an object of type D is convertible to type B (the test
24 // succeeds in particular when D derives from B)
25 template <class D, class B>
26 struct wxConvertibleTo
27 {
28 enum
29 {
30 value =
31 sizeof(wxConvertibleTo_SizeHelper<D,B>::Match(static_cast<D*>(NULL)))
32 ==
33 sizeof(char)
34 };
35 };
36
37 #endif // _WX_META_CONVERTIBLE_H_
38