All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Groups Pages
IsBaseOf.h
Go to the documentation of this file.
1 //=================================================================================================
20 //=================================================================================================
21 
22 #ifndef _BLAZE_UTIL_TYPETRAITS_ISBASEOF_H_
23 #define _BLAZE_UTIL_TYPETRAITS_ISBASEOF_H_
24 
25 
26 //*************************************************************************************************
27 // Includes
28 //*************************************************************************************************
29 
30 #include <boost/type_traits/is_base_of.hpp>
31 #include <blaze/util/FalseType.h>
32 #include <blaze/util/SelectType.h>
33 #include <blaze/util/TrueType.h>
35 
36 
37 namespace blaze {
38 
39 //=================================================================================================
40 //
41 // CLASS DEFINITION
42 //
43 //=================================================================================================
44 
45 //*************************************************************************************************
50 template< typename Base, typename Derived >
51 struct IsBaseOfHelper
52 {
53  //**********************************************************************************************
54  enum { value = boost::is_base_of<typename RemoveCV<Base>::Type,
55  typename RemoveCV<Derived>::Type>::value };
56  typedef typename SelectType<value,TrueType,FalseType>::Type Type;
57  //**********************************************************************************************
58 };
60 //*************************************************************************************************
61 
62 
63 //*************************************************************************************************
86 template< typename Base, typename Derived >
87 class IsBaseOf : public IsBaseOfHelper<Base,Derived>::Type
88 {
89  public:
90  //**********************************************************************************************
92  enum { value = IsBaseOfHelper<Base,Derived>::value };
93  typedef typename IsBaseOfHelper<Base,Derived>::Type Type;
95  //**********************************************************************************************
96 };
97 //*************************************************************************************************
98 
99 } // namespace blaze
100 
101 #endif