1 /////////////////////////////////////////////////////////////////////////////
2 // Name: wx/meta/convertible.h
3 // Purpose: Test if types are convertible
4 // Author: Arne Steinarson
7 // Copyright: (c) 2008 Arne Steinarson
8 // Licence: wxWindows licence
9 /////////////////////////////////////////////////////////////////////////////
11 #ifndef _WX_META_CONVERTIBLE_H_
12 #define _WX_META_CONVERTIBLE_H_
15 // Introduce an extra class to make this header compilable with g++3.2
17 template <class D
, class B
>
18 struct wxConvertibleTo_SizeHelper
20 static char Match(B
* pb
);
21 static int Match(...);
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
29 enum { value
= sizeof(wxConvertibleTo_SizeHelper
<D
,B
>::Match(static_cast<D
*>(NULL
)))==sizeof(char)
33 #endif // _WX_META_CONVERTIBLE_H_