35 #ifndef _BLAZE_MATH_CONSTRAINTS_VECVECADDEXPR_H_
36 #define _BLAZE_MATH_CONSTRAINTS_VECVECADDEXPR_H_
69 #define BLAZE_CONSTRAINT_MUST_BE_VECVECADDEXPR_TYPE(T) \
70 static_assert( ::blaze::IsVecVecAddExpr<T>::value, "Non-vector/vector addition expression type detected" )
89 #define BLAZE_CONSTRAINT_MUST_NOT_BE_VECVECADDEXPR_TYPE(T) \
90 static_assert( !::blaze::IsVecVecAddExpr<T>::value, "Vector/vector addition expression type detected" )
109 #define BLAZE_CONSTRAINT_MUST_FORM_VALID_VECVECADDEXPR(T1,T2) \
110 static_assert( ::blaze::And< ::blaze::Or< ::blaze::And< ::blaze::IsRowVector<T1> \
111 , ::blaze::IsRowVector<T2> > \
112 , ::blaze::And< ::blaze::IsColumnVector<T1> \
113 , ::blaze::IsColumnVector<T2> > > \
114 , ::blaze::Or< ::blaze::Equal< ::blaze::Size<T1>, ::blaze::SizeT<0UL> > \
115 , ::blaze::Equal< ::blaze::Size<T2>, ::blaze::SizeT<0UL> > \
116 , ::blaze::Equal< ::blaze::Size<T1>, ::blaze::Size<T2> > > \
117 >::value, "Invalid vector/vector addition expression detected" )
136 #define BLAZE_CONSTRAINT_MUST_NOT_FORM_VALID_VECVECADDEXPR(T1,T2) \
137 static_assert( ::blaze::Not< ::blaze::And< ::blaze::Or< ::blaze::And< ::blaze::IsRowVector<T1> \
138 , ::blaze::IsRowVector<T2> > \
139 , ::blaze::And< ::blaze::IsColumnVector<T1> \
140 , ::blaze::IsColumnVector<T2> > > \
141 , ::blaze::Or< ::blaze::Equal< ::blaze::Size<T1>, ::blaze::SizeT<0UL> > \
142 , ::blaze::Equal< ::blaze::Size<T2>, ::blaze::SizeT<0UL> > \
143 , ::blaze::Equal< ::blaze::Size<T1>, ::blaze::Size<T2> > > > \
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 IsVecVecAddExpr type trait class.
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.
Header file for the IsColumnVector type trait.
Header file for the Size type trait.
Header file for the Equal class template.