All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Groups Pages
SameType.h
Go to the documentation of this file.
1 //=================================================================================================
20 //=================================================================================================
21 
22 #ifndef _BLAZE_UTIL_CONSTRAINTS_SAMETYPE_H_
23 #define _BLAZE_UTIL_CONSTRAINTS_SAMETYPE_H_
24 
25 
26 //*************************************************************************************************
27 // Includes
28 //*************************************************************************************************
29 
31 #include <blaze/util/Suffix.h>
33 
34 
35 namespace blaze {
36 
37 //=================================================================================================
38 //
39 // MUST_BE_SAME_TYPE CONSTRAINT
40 //
41 //=================================================================================================
42 
43 //*************************************************************************************************
53 template< bool > struct CONSTRAINT_MUST_BE_SAME_TYPE_FAILED;
54 template<> struct CONSTRAINT_MUST_BE_SAME_TYPE_FAILED<true> { enum { value = 1 }; };
56 //*************************************************************************************************
57 
58 
59 //*************************************************************************************************
76 #define BLAZE_CONSTRAINT_MUST_BE_SAME_TYPE(A,B) \
77  typedef \
78  ::blaze::CONSTRAINT_TEST< \
79  ::blaze::CONSTRAINT_MUST_BE_SAME_TYPE_FAILED< ::blaze::IsSame<A,B>::value >::value > \
80  BLAZE_JOIN( CONSTRAINT_MUST_BE_SAME_TYPE_TYPEDEF, __LINE__ )
81 //*************************************************************************************************
82 
83 
84 
85 
86 //=================================================================================================
87 //
88 // MUST_NOT_BE_SAME_TYPE CONSTRAINT
89 //
90 //=================================================================================================
91 
92 //*************************************************************************************************
102 template< bool > struct CONSTRAINT_MUST_NOT_BE_SAME_TYPE_FAILED;
103 template<> struct CONSTRAINT_MUST_NOT_BE_SAME_TYPE_FAILED<true> { enum { value = 1 }; };
105 //*************************************************************************************************
106 
107 
108 //*************************************************************************************************
126 #define BLAZE_CONSTRAINT_MUST_NOT_BE_SAME_TYPE(A,B) \
127  typedef \
128  ::blaze::CONSTRAINT_TEST< \
129  ::blaze::CONSTRAINT_MUST_NOT_BE_SAME_TYPE_FAILED< !::blaze::IsSame<A,B>::value >::value > \
130  BLAZE_JOIN( CONSTRAINT_MUST_NOT_BE_SAME_TYPE_TYPEDEF, __LINE__ )
131 //*************************************************************************************************
132 
133 
134 
135 
136 //=================================================================================================
137 //
138 // MUST_BE_STRICTLY_SAME_TYPE CONSTRAINT
139 //
140 //=================================================================================================
141 
142 //*************************************************************************************************
152 template< bool > struct CONSTRAINT_MUST_BE_STRICTLY_SAME_TYPE_FAILED;
153 template<> struct CONSTRAINT_MUST_BE_STRICTLY_SAME_TYPE_FAILED<true> { enum { value = 1 }; };
155 //*************************************************************************************************
156 
157 
158 //*************************************************************************************************
174 #define BLAZE_CONSTRAINT_MUST_BE_STRICTLY_SAME_TYPE(A,B) \
175  typedef \
176  ::blaze::CONSTRAINT_TEST< \
177  ::blaze::CONSTRAINT_MUST_BE_STRICTLY_SAME_TYPE_FAILED< ::blaze::IsStrictlySame<A,B>::value >::value > \
178  BLAZE_JOIN( CONSTRAINT_MUST_BE_STRICTLY_SAME_TYPE_TYPEDEF, __LINE__ )
179 //*************************************************************************************************
180 
181 
182 
183 
184 //=================================================================================================
185 //
186 // MUST_NOT_BE_STRICTLY_SAME_TYPE CONSTRAINT
187 //
188 //=================================================================================================
189 
190 //*************************************************************************************************
200 template< bool > struct CONSTRAINT_MUST_NOT_BE_STRICTLY_SAME_TYPE_FAILED;
201 template<> struct CONSTRAINT_MUST_NOT_BE_STRICTLY_SAME_TYPE_FAILED<true> { enum { value = 1 }; };
203 //*************************************************************************************************
204 
205 
206 //*************************************************************************************************
222 #define BLAZE_CONSTRAINT_MUST_NOT_BE_STRICTLY_SAME_TYPE(A,B) \
223  typedef \
224  ::blaze::CONSTRAINT_TEST< \
225  ::blaze::CONSTRAINT_MUST_NOT_BE_STRICTLY_SAME_TYPE_FAILED< !::blaze::IsStrictlySame<A,B>::value >::value > \
226  BLAZE_JOIN( CONSTRAINT_MUST_NOT_BE_STRICTLY_SAME_TYPE_TYPEDEF, __LINE__ )
227 //*************************************************************************************************
228 
229 } // namespace blaze
230 
231 #endif