35 #ifndef _BLAZE_UTIL_CONSTRAINTS_SAMETYPE_H_
36 #define _BLAZE_UTIL_CONSTRAINTS_SAMETYPE_H_
66 template<
bool >
struct CONSTRAINT_MUST_BE_SAME_TYPE_FAILED;
67 template<>
struct CONSTRAINT_MUST_BE_SAME_TYPE_FAILED<true> {
enum { value = 1 }; };
89 #define BLAZE_CONSTRAINT_MUST_BE_SAME_TYPE(A,B) \
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__ )
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 }; };
139 #define BLAZE_CONSTRAINT_MUST_NOT_BE_SAME_TYPE(A,B) \
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__ )
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 }; };
187 #define BLAZE_CONSTRAINT_MUST_BE_STRICTLY_SAME_TYPE(A,B) \
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__ )
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 }; };
235 #define BLAZE_CONSTRAINT_MUST_NOT_BE_STRICTLY_SAME_TYPE(A,B) \
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__ )
Header file for the IsSame and IsStrictlySame type traits.
Constraint wrapper class.
Header file for compile time constraints.