All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Groups Pages
HaveSameSize.h
Go to the documentation of this file.
1 //=================================================================================================
20 //=================================================================================================
21 
22 #ifndef _BLAZE_UTIL_TYPETRAITS_HAVESAMESIZE_H_
23 #define _BLAZE_UTIL_TYPETRAITS_HAVESAMESIZE_H_
24 
25 
26 //*************************************************************************************************
27 // Includes
28 //*************************************************************************************************
29 
30 #include <blaze/util/FalseType.h>
31 #include <blaze/util/SelectType.h>
32 #include <blaze/util/TrueType.h>
33 
34 
35 namespace blaze {
36 
37 //=================================================================================================
38 //
39 // CLASS DEFINITION
40 //
41 //=================================================================================================
42 
43 //*************************************************************************************************
79 template< typename T1, typename T2 >
80 class HaveSameSize : public SelectType< sizeof(T1) == sizeof(T2), TrueType, FalseType >::Type
81 {
82  public:
83  //**********************************************************************************************
85  enum { value = sizeof( T1 ) == sizeof( T2 ) };
86  typedef typename SelectType<value,TrueType,FalseType>::Type Type;
88  //**********************************************************************************************
89 };
90 //*************************************************************************************************
91 
92 
93 //*************************************************************************************************
103 template< typename T >
104 class HaveSameSize<void,T> : public FalseType
105 {
106  public:
107  //**********************************************************************************************
108  enum { value = 0 };
109  typedef FalseType Type;
110  //**********************************************************************************************
111 };
113 //*************************************************************************************************
114 
115 
116 //*************************************************************************************************
126 template< typename T >
127 class HaveSameSize<T,void> : public FalseType
128 {
129  public:
130  //**********************************************************************************************
131  enum { value = 0 };
132  typedef FalseType Type;
133  //**********************************************************************************************
134 };
136 //*************************************************************************************************
137 
138 
139 //*************************************************************************************************
149 template<>
150 class HaveSameSize<void,void> : public TrueType
151 {
152  public:
153  //**********************************************************************************************
154  enum { value = 1 };
155  typedef TrueType Type;
156  //**********************************************************************************************
157 };
159 //*************************************************************************************************
160 
161 } // namespace blaze
162 
163 #endif