SameType.h
Go to the documentation of this file.
1 //=================================================================================================
33 //=================================================================================================
34 
35 #ifndef _BLAZE_UTIL_CONSTRAINTS_SAMETYPE_H_
36 #define _BLAZE_UTIL_CONSTRAINTS_SAMETYPE_H_
37 
38 
39 //*************************************************************************************************
40 // Includes
41 //*************************************************************************************************
42 
44 #include <blaze/util/Suffix.h>
46 
47 
48 namespace blaze {
49 
50 //=================================================================================================
51 //
52 // MUST_BE_SAME_TYPE CONSTRAINT
53 //
54 //=================================================================================================
55 
56 //*************************************************************************************************
66 template< bool > struct CONSTRAINT_MUST_BE_SAME_TYPE_FAILED;
67 template<> struct CONSTRAINT_MUST_BE_SAME_TYPE_FAILED<true> { enum { value = 1 }; };
69 //*************************************************************************************************
70 
71 
72 //*************************************************************************************************
89 #define BLAZE_CONSTRAINT_MUST_BE_SAME_TYPE(A,B) \
90  typedef \
91  ::blaze::CONSTRAINT_TEST< \
92  ::blaze::CONSTRAINT_MUST_BE_SAME_TYPE_FAILED< ::blaze::IsSame<A,B>::value >::value > \
93  BLAZE_JOIN( CONSTRAINT_MUST_BE_SAME_TYPE_TYPEDEF, __LINE__ )
94 //*************************************************************************************************
95 
96 
97 
98 
99 //=================================================================================================
100 //
101 // MUST_NOT_BE_SAME_TYPE CONSTRAINT
102 //
103 //=================================================================================================
104 
105 //*************************************************************************************************
115 template< bool > struct CONSTRAINT_MUST_NOT_BE_SAME_TYPE_FAILED;
116 template<> struct CONSTRAINT_MUST_NOT_BE_SAME_TYPE_FAILED<true> { enum { value = 1 }; };
118 //*************************************************************************************************
119 
120 
121 //*************************************************************************************************
139 #define BLAZE_CONSTRAINT_MUST_NOT_BE_SAME_TYPE(A,B) \
140  typedef \
141  ::blaze::CONSTRAINT_TEST< \
142  ::blaze::CONSTRAINT_MUST_NOT_BE_SAME_TYPE_FAILED< !::blaze::IsSame<A,B>::value >::value > \
143  BLAZE_JOIN( CONSTRAINT_MUST_NOT_BE_SAME_TYPE_TYPEDEF, __LINE__ )
144 //*************************************************************************************************
145 
146 
147 
148 
149 //=================================================================================================
150 //
151 // MUST_BE_STRICTLY_SAME_TYPE CONSTRAINT
152 //
153 //=================================================================================================
154 
155 //*************************************************************************************************
165 template< bool > struct CONSTRAINT_MUST_BE_STRICTLY_SAME_TYPE_FAILED;
166 template<> struct CONSTRAINT_MUST_BE_STRICTLY_SAME_TYPE_FAILED<true> { enum { value = 1 }; };
168 //*************************************************************************************************
169 
170 
171 //*************************************************************************************************
187 #define BLAZE_CONSTRAINT_MUST_BE_STRICTLY_SAME_TYPE(A,B) \
188  typedef \
189  ::blaze::CONSTRAINT_TEST< \
190  ::blaze::CONSTRAINT_MUST_BE_STRICTLY_SAME_TYPE_FAILED< ::blaze::IsStrictlySame<A,B>::value >::value > \
191  BLAZE_JOIN( CONSTRAINT_MUST_BE_STRICTLY_SAME_TYPE_TYPEDEF, __LINE__ )
192 //*************************************************************************************************
193 
194 
195 
196 
197 //=================================================================================================
198 //
199 // MUST_NOT_BE_STRICTLY_SAME_TYPE CONSTRAINT
200 //
201 //=================================================================================================
202 
203 //*************************************************************************************************
213 template< bool > struct CONSTRAINT_MUST_NOT_BE_STRICTLY_SAME_TYPE_FAILED;
214 template<> struct CONSTRAINT_MUST_NOT_BE_STRICTLY_SAME_TYPE_FAILED<true> { enum { value = 1 }; };
216 //*************************************************************************************************
217 
218 
219 //*************************************************************************************************
235 #define BLAZE_CONSTRAINT_MUST_NOT_BE_STRICTLY_SAME_TYPE(A,B) \
236  typedef \
237  ::blaze::CONSTRAINT_TEST< \
238  ::blaze::CONSTRAINT_MUST_NOT_BE_STRICTLY_SAME_TYPE_FAILED< !::blaze::IsStrictlySame<A,B>::value >::value > \
239  BLAZE_JOIN( CONSTRAINT_MUST_NOT_BE_STRICTLY_SAME_TYPE_TYPEDEF, __LINE__ )
240 //*************************************************************************************************
241 
242 } // namespace blaze
243 
244 #endif
Header file for the IsSame and IsStrictlySame type traits.
Namespace of the Blaze C++ math library.
Definition: Blaze.h:57
Constraint wrapper class.
Header file for compile time constraints.