35 #ifndef _BLAZE_MATH_CONSTRAINTS_TRANSPOSEFLAG_H_
36 #define _BLAZE_MATH_CONSTRAINTS_TRANSPOSEFLAG_H_
68 template<
bool >
struct CONSTRAINT_MUST_BE_ROW_VECTOR_TYPE_FAILED;
69 template<>
struct CONSTRAINT_MUST_BE_ROW_VECTOR_TYPE_FAILED<true> {
enum { value = 1 }; };
81 #define BLAZE_CONSTRAINT_MUST_BE_ROW_VECTOR_TYPE(T) \
83 blaze::CONSTRAINT_TEST< \
84 blaze::CONSTRAINT_MUST_BE_ROW_VECTOR_TYPE_FAILED< blaze::IsRowVector<T>::value >::value > \
85 BLAZE_JOIN( CONSTRAINT_MUST_BE_ROW_VECTOR_TYPE_TYPEDEF, __LINE__ )
107 template<
bool >
struct CONSTRAINT_MUST_NOT_BE_ROW_VECTOR_TYPE_FAILED;
108 template<>
struct CONSTRAINT_MUST_NOT_BE_ROW_VECTOR_TYPE_FAILED<true> {
enum { value = 1 }; };
120 #define BLAZE_CONSTRAINT_MUST_NOT_BE_ROW_VECTOR_TYPE(T) \
122 blaze::CONSTRAINT_TEST< \
123 blaze::CONSTRAINT_MUST_NOT_BE_ROW_VECTOR_TYPE_FAILED< !blaze::IsRowVector<T>::value >::value > \
124 BLAZE_JOIN( CONSTRAINT_MUST_NOT_BE_ROW_VECTOR_TYPE_TYPEDEF, __LINE__ )
146 template<
bool >
struct CONSTRAINT_MUST_BE_COLUMN_VECTOR_TYPE_FAILED;
147 template<>
struct CONSTRAINT_MUST_BE_COLUMN_VECTOR_TYPE_FAILED<true> {
enum { value = 1 }; };
159 #define BLAZE_CONSTRAINT_MUST_BE_COLUMN_VECTOR_TYPE(T) \
161 blaze::CONSTRAINT_TEST< \
162 blaze::CONSTRAINT_MUST_BE_COLUMN_VECTOR_TYPE_FAILED< blaze::IsColumnVector<T>::value >::value > \
163 BLAZE_JOIN( CONSTRAINT_MUST_BE_COLUMN_VECTOR_TYPE_TYPEDEF, __LINE__ )
185 template<
bool >
struct CONSTRAINT_MUST_NOT_BE_COLUMN_VECTOR_TYPE_FAILED;
186 template<>
struct CONSTRAINT_MUST_NOT_BE_COLUMN_VECTOR_TYPE_FAILED<true> {
enum { value = 1 }; };
198 #define BLAZE_CONSTRAINT_MUST_NOT_BE_COLUMN_VECTOR_TYPE(T) \
200 blaze::CONSTRAINT_TEST< \
201 blaze::CONSTRAINT_MUST_NOT_BE_COLUMN_VECTOR_TYPE_FAILED< !blaze::IsColumnVector<T>::value >::value > \
202 BLAZE_JOIN( CONSTRAINT_MUST_NOT_BE_COLUMN_VECTOR_TYPE_TYPEDEF, __LINE__ )
224 template<
bool >
struct CONSTRAINT_MUST_BE_VECTOR_WITH_TRANSPOSE_FLAG_FAILED;
225 template<>
struct CONSTRAINT_MUST_BE_VECTOR_WITH_TRANSPOSE_FLAG_FAILED<true> {
enum { value = 1 }; };
238 #define BLAZE_CONSTRAINT_MUST_BE_VECTOR_WITH_TRANSPOSE_FLAG(T,TF) \
240 blaze::CONSTRAINT_TEST< \
241 blaze::CONSTRAINT_MUST_BE_VECTOR_WITH_TRANSPOSE_FLAG_FAILED< \
242 blaze::IsVector<T>::value && \
243 blaze::IsRowVector<T>::value == TF >::value > \
244 BLAZE_JOIN( CONSTRAINT_MUST_BE_VECTOR_WITH_TRANSPOSE_FLAG_TYPEDEF, __LINE__ )
266 template<
bool >
struct CONSTRAINT_VECTORS_MUST_HAVE_SAME_TRANSPOSE_FLAG_FAILED;
267 template<>
struct CONSTRAINT_VECTORS_MUST_HAVE_SAME_TRANSPOSE_FLAG_FAILED<true> {
enum { value = 1 }; };
279 #define BLAZE_CONSTRAINT_VECTORS_MUST_HAVE_SAME_TRANSPOSE_FLAG(T1,T2) \
281 blaze::CONSTRAINT_TEST< \
282 blaze::CONSTRAINT_VECTORS_MUST_HAVE_SAME_TRANSPOSE_FLAG_FAILED< \
283 blaze::IsVector<T1>::value && \
284 blaze::IsVector<T2>::value && \
285 static_cast<int>( blaze::IsColumnVector<T1>::value ) == static_cast<int>( blaze::IsColumnVector<T2>::value ) >::value > \
286 BLAZE_JOIN( CONSTRAINT_VECTORS_MUST_HAVE_SAME_TRANSPOSE_FLAG_TYPEDEF, __LINE__ )
Header file for the IsRowVector type trait.
Header file for the IsVector type trait.
Constraint wrapper class.
Header file for the IsColumnVector type trait.
Header file for compile time constraints.