35 #ifndef _BLAZE_MATH_CONSTRAINTS_TVECMATMULTEXPR_H_
36 #define _BLAZE_MATH_CONSTRAINTS_TVECMATMULTEXPR_H_
75 template<
bool >
struct CONSTRAINT_MUST_BE_TVECMATMULTEXPR_TYPE_FAILED;
76 template<>
struct CONSTRAINT_MUST_BE_TVECMATMULTEXPR_TYPE_FAILED<true> {
enum { value = 1 }; };
88 #define BLAZE_CONSTRAINT_MUST_BE_TVECMATMULTEXPR_TYPE(T) \
90 blaze::CONSTRAINT_TEST< \
91 blaze::CONSTRAINT_MUST_BE_TVECMATMULTEXPR_TYPE_FAILED< blaze::IsTVecMatMultExpr<T>::value >::value > \
92 BLAZE_JOIN( CONSTRAINT_MUST_BE_TVECMATMULTEXPR_TYPE_TYPEDEF, __LINE__ )
114 template<
bool >
struct CONSTRAINT_MUST_NOT_BE_TVECMATMULTEXPR_TYPE_FAILED;
115 template<>
struct CONSTRAINT_MUST_NOT_BE_TVECMATMULTEXPR_TYPE_FAILED<true> {
enum { value = 1 }; };
127 #define BLAZE_CONSTRAINT_MUST_NOT_BE_TVECMATMULTEXPR_TYPE(T) \
129 blaze::CONSTRAINT_TEST< \
130 blaze::CONSTRAINT_MUST_NOT_BE_TVECMATMULTEXPR_TYPE_FAILED< !blaze::IsTVecMatMultExpr<T>::value >::value > \
131 BLAZE_JOIN( CONSTRAINT_MUST_NOT_BE_TVECMATMULTEXPR_TYPE_TYPEDEF, __LINE__ )
153 template<
bool >
struct CONSTRAINT_MUST_FORM_VALID_TVECMATMULTEXPR_FAILED;
154 template<>
struct CONSTRAINT_MUST_FORM_VALID_TVECMATMULTEXPR_FAILED<true> {
enum { value = 1 }; };
166 #define BLAZE_CONSTRAINT_MUST_FORM_VALID_TVECMATMULTEXPR(T1,T2) \
168 blaze::CONSTRAINT_TEST< \
169 blaze::CONSTRAINT_MUST_FORM_VALID_TVECMATMULTEXPR_FAILED< ( \
170 blaze::And< blaze::IsRowVector<T1> \
171 , blaze::IsMatrix<T2> \
172 , blaze::Or< blaze::Equal< blaze::Size<T1>, blaze::SizeT<0UL> > \
173 , blaze::Equal< blaze::Rows<T2>, blaze::SizeT<0UL> > \
174 , blaze::Equal< blaze::Size<T1>, blaze::Rows<T2> > > \
175 >::value ) >::value > \
176 BLAZE_JOIN( CONSTRAINT_MUST_FORM_VALID_TVECMATMULTEXPR_TYPEDEF, __LINE__ )
198 template<
bool >
struct CONSTRAINT_MUST_NOT_FORM_VALID_TVECMATMULTEXPR_FAILED;
199 template<>
struct CONSTRAINT_MUST_NOT_FORM_VALID_TVECMATMULTEXPR_FAILED<true> {
enum { value = 1 }; };
211 #define BLAZE_CONSTRAINT_MUST_NOT_FORM_VALID_TVECMATMULTEXPR(T1,T2) \
213 blaze::CONSTRAINT_TEST< \
214 blaze::CONSTRAINT_MUST_NOT_FORM_VALID_TVECMATMULTEXPR_FAILED< ( \
215 blaze::Not< blaze::And< blaze::IsRowVector<T1> \
216 , blaze::IsMatrix<T2> \
217 , blaze::Or< blaze::Equal< blaze::Size<T1>, blaze::SizeT<0UL> > \
218 , blaze::Equal< blaze::Rows<T2>, blaze::SizeT<0UL> > \
219 , blaze::Equal< blaze::Size<T1>, blaze::Rows<T2> > > > \
220 >::value ) >::value > \
221 BLAZE_JOIN( CONSTRAINT_MUST_NOT_FORM_VALID_TVECMATMULTEXPR_TYPEDEF, __LINE__ )
Header file for the Rows type trait.
Header file for the IsTVecMatMultExpr type trait class.
Header file for the IsRowVector type trait.
Header file for the And class template.
Header file for the SizeT class template.
Header file for the IsMatrix type trait.
Namespace of the Blaze C++ math library.
Definition: Blaze.h:57
Header file for the Or class template.
Header file for the Not class template.
Constraint wrapper class.
Header file for the Size type trait.
Header file for compile time constraints.
Header file for the Equal class template.