22 #ifndef _BLAZE_UTIL_CONSTRAINTS_SAMETYPE_H_
23 #define _BLAZE_UTIL_CONSTRAINTS_SAMETYPE_H_
53 template<
bool >
struct CONSTRAINT_MUST_BE_SAME_TYPE_FAILED;
54 template<>
struct CONSTRAINT_MUST_BE_SAME_TYPE_FAILED<true> {
enum { value = 1 }; };
76 #define BLAZE_CONSTRAINT_MUST_BE_SAME_TYPE(A,B) \
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__ )
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 }; };
126 #define BLAZE_CONSTRAINT_MUST_NOT_BE_SAME_TYPE(A,B) \
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__ )
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 }; };
174 #define BLAZE_CONSTRAINT_MUST_BE_STRICTLY_SAME_TYPE(A,B) \
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__ )
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 }; };
222 #define BLAZE_CONSTRAINT_MUST_NOT_BE_STRICTLY_SAME_TYPE(A,B) \
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__ )