22 #ifndef _BLAZE_MATH_CONSTRAINTS_TRANSPOSEFLAG_H_
23 #define _BLAZE_MATH_CONSTRAINTS_TRANSPOSEFLAG_H_
54 template<
bool >
struct CONSTRAINT_MUST_BE_TRANSPOSE_VECTOR_TYPE_FAILED;
55 template<>
struct CONSTRAINT_MUST_BE_TRANSPOSE_VECTOR_TYPE_FAILED<true> {
enum { value = 1 }; };
67 #define BLAZE_CONSTRAINT_MUST_BE_TRANSPOSE_VECTOR_TYPE(T) \
69 blaze::CONSTRAINT_TEST< \
70 blaze::CONSTRAINT_MUST_BE_TRANSPOSE_VECTOR_TYPE_FAILED< blaze::IsTransposeVector<T>::value >::value > \
71 BLAZE_JOIN( CONSTRAINT_MUST_BE_TRANSPOSE_VECTOR_TYPE_TYPEDEF, __LINE__ )
93 template<
bool >
struct CONSTRAINT_MUST_NOT_BE_TRANSPOSE_VECTOR_TYPE_FAILED;
94 template<>
struct CONSTRAINT_MUST_NOT_BE_TRANSPOSE_VECTOR_TYPE_FAILED<true> {
enum { value = 1 }; };
106 #define BLAZE_CONSTRAINT_MUST_NOT_BE_TRANSPOSE_VECTOR_TYPE(T) \
108 blaze::CONSTRAINT_TEST< \
109 blaze::CONSTRAINT_MUST_NOT_BE_TRANSPOSE_VECTOR_TYPE_FAILED< !blaze::IsTransposeVector<T>::value >::value > \
110 BLAZE_JOIN( CONSTRAINT_MUST_NOT_BE_TRANSPOSE_VECTOR_TYPE_TYPEDEF, __LINE__ )
132 template<
bool >
struct CONSTRAINT_MUST_BE_NONTRANSPOSE_VECTOR_TYPE_FAILED;
133 template<>
struct CONSTRAINT_MUST_BE_NONTRANSPOSE_VECTOR_TYPE_FAILED<true> {
enum { value = 1 }; };
145 #define BLAZE_CONSTRAINT_MUST_BE_NONTRANSPOSE_VECTOR_TYPE(T) \
147 blaze::CONSTRAINT_TEST< \
148 blaze::CONSTRAINT_MUST_BE_NONTRANSPOSE_VECTOR_TYPE_FAILED< \
149 blaze::IsVector<T>::value && \
150 !blaze::IsTransposeVector<T>::value >::value > \
151 BLAZE_JOIN( CONSTRAINT_MUST_BE_NONTRANSPOSE_VECTOR_TYPE_TYPEDEF, __LINE__ )
173 template<
bool >
struct CONSTRAINT_MUST_NOT_BE_NONTRANSPOSE_VECTOR_TYPE_FAILED;
174 template<>
struct CONSTRAINT_MUST_NOT_BE_NONTRANSPOSE_VECTOR_TYPE_FAILED<true> {
enum { value = 1 }; };
186 #define BLAZE_CONSTRAINT_MUST_NOT_BE_NONTRANSPOSE_VECTOR_TYPE(T) \
188 blaze::CONSTRAINT_TEST< \
189 blaze::CONSTRAINT_MUST_NOT_BE_NONTRANSPOSE_VECTOR_TYPE_FAILED< \
190 !blaze::IsVector<T>::value || \
191 blaze::IsTransposeVector<T>::value >::value > \
192 BLAZE_JOIN( CONSTRAINT_MUST_NOT_BE_NONTRANSPOSE_VECTOR_TYPE_TYPEDEF, __LINE__ )
214 template<
bool >
struct CONSTRAINT_MUST_BE_VECTOR_WITH_TRANSPOSE_FLAG_FAILED;
215 template<>
struct CONSTRAINT_MUST_BE_VECTOR_WITH_TRANSPOSE_FLAG_FAILED<true> {
enum { value = 1 }; };
228 #define BLAZE_CONSTRAINT_MUST_BE_VECTOR_WITH_TRANSPOSE_FLAG(T,TF) \
230 blaze::CONSTRAINT_TEST< \
231 blaze::CONSTRAINT_MUST_BE_VECTOR_WITH_TRANSPOSE_FLAG_FAILED< \
232 blaze::IsVector<T>::value && \
233 blaze::IsTransposeVector<T>::value == TF >::value > \
234 BLAZE_JOIN( CONSTRAINT_MUST_BE_VECTOR_WITH_TRANSPOSE_FLAG_TYPEDEF, __LINE__ )
256 template<
bool >
struct CONSTRAINT_VECTORS_MUST_HAVE_SAME_TRANSPOSE_FLAG_FAILED;
257 template<>
struct CONSTRAINT_VECTORS_MUST_HAVE_SAME_TRANSPOSE_FLAG_FAILED<true> {
enum { value = 1 }; };
269 #define BLAZE_CONSTRAINT_VECTORS_MUST_HAVE_SAME_TRANSPOSE_FLAG(T1,T2) \
271 blaze::CONSTRAINT_TEST< \
272 blaze::CONSTRAINT_VECTORS_MUST_HAVE_SAME_TRANSPOSE_FLAG_FAILED< \
273 blaze::IsVector<T1>::value && \
274 blaze::IsVector<T2>::value && \
275 static_cast<int>( blaze::IsTransposeVector<T1>::value ) == static_cast<int>( blaze::IsTransposeVector<T2>::value ) >::value > \
276 BLAZE_JOIN( CONSTRAINT_VECTORS_MUST_HAVE_SAME_TRANSPOSE_FLAG_TYPEDEF, __LINE__ )