HaveSameSize.h
Go to the documentation of this file.
1 //=================================================================================================
33 //=================================================================================================
34 
35 #ifndef _BLAZE_UTIL_TYPETRAITS_HAVESAMESIZE_H_
36 #define _BLAZE_UTIL_TYPETRAITS_HAVESAMESIZE_H_
37 
38 
39 //*************************************************************************************************
40 // Includes
41 //*************************************************************************************************
42 
43 #include <blaze/util/FalseType.h>
44 #include <blaze/util/SelectType.h>
45 #include <blaze/util/TrueType.h>
46 
47 
48 namespace blaze {
49 
50 //=================================================================================================
51 //
52 // CLASS DEFINITION
53 //
54 //=================================================================================================
55 
56 //*************************************************************************************************
92 template< typename T1, typename T2 >
93 class HaveSameSize : public SelectType< sizeof(T1) == sizeof(T2), TrueType, FalseType >::Type
94 {
95  public:
96  //**********************************************************************************************
98  enum { value = sizeof( T1 ) == sizeof( T2 ) };
99  typedef typename SelectType<value,TrueType,FalseType>::Type Type;
101  //**********************************************************************************************
102 };
103 //*************************************************************************************************
104 
105 
106 //*************************************************************************************************
116 template< typename T >
117 class HaveSameSize<void,T> : public FalseType
118 {
119  public:
120  //**********************************************************************************************
121  enum { value = 0 };
122  typedef FalseType Type;
123  //**********************************************************************************************
124 };
126 //*************************************************************************************************
127 
128 
129 //*************************************************************************************************
139 template< typename T >
140 class HaveSameSize<T,void> : public FalseType
141 {
142  public:
143  //**********************************************************************************************
144  enum { value = 0 };
145  typedef FalseType Type;
146  //**********************************************************************************************
147 };
149 //*************************************************************************************************
150 
151 
152 //*************************************************************************************************
162 template<>
163 class HaveSameSize<void,void> : public TrueType
164 {
165  public:
166  //**********************************************************************************************
167  enum { value = 1 };
168  typedef TrueType Type;
169  //**********************************************************************************************
170 };
172 //*************************************************************************************************
173 
174 } // namespace blaze
175 
176 #endif
Header file for the FalseType type/value trait base class.
Compile time type selection.The SelectType class template selects one of the two given types T1 and T...
Definition: SelectType.h:59
Namespace of the Blaze C++ math library.
Definition: Blaze.h:57
Compile time size check.This class offers the possibility to test the size of two types at compile ti...
Definition: HaveSameSize.h:93
Header file for the SelectType class template.
boost::false_type FalseType
Type/value traits base class.The FalseType class is used as base class for type traits and value trai...
Definition: FalseType.h:61
boost::true_type TrueType
Type traits base class.The TrueType class is used as base class for type traits and value traits that...
Definition: TrueType.h:61
Header file for the TrueType type/value trait base class.