VecTVecMultExpr.h
Go to the documentation of this file.
1 //=================================================================================================
33 //=================================================================================================
34 
35 #ifndef _BLAZE_MATH_CONSTRAINTS_VECTVECMULTEXPR_H_
36 #define _BLAZE_MATH_CONSTRAINTS_VECTVECMULTEXPR_H_
37 
38 
39 //*************************************************************************************************
40 // Includes
41 //*************************************************************************************************
42 
46 #include <blaze/util/mpl/And.h>
47 #include <blaze/util/mpl/Not.h>
48 
49 
50 namespace blaze {
51 
52 //=================================================================================================
53 //
54 // MUST_BE_VECTVECMULTEXPR_TYPE CONSTRAINT
55 //
56 //=================================================================================================
57 
58 //*************************************************************************************************
65 #define BLAZE_CONSTRAINT_MUST_BE_VECTVECMULTEXPR_TYPE(T) \
66  static_assert( ::blaze::IsVecTVecMultExpr<T>::value, "Non-outer product expression type detected" )
67 //*************************************************************************************************
68 
69 
70 
71 
72 //=================================================================================================
73 //
74 // MUST_NOT_BE_VECTVECMULTEXPR_TYPE CONSTRAINT
75 //
76 //=================================================================================================
77 
78 //*************************************************************************************************
85 #define BLAZE_CONSTRAINT_MUST_NOT_BE_VECTVECMULTEXPR_TYPE(T) \
86  static_assert( !::blaze::IsVecTVecMultExpr<T>::value, "Outer product expression type detected" )
87 //*************************************************************************************************
88 
89 
90 
91 
92 //=================================================================================================
93 //
94 // MUST_FORM_VALID_VECTVECMULTEXPR CONSTRAINT
95 //
96 //=================================================================================================
97 
98 //*************************************************************************************************
105 #define BLAZE_CONSTRAINT_MUST_FORM_VALID_VECTVECMULTEXPR(T1,T2) \
106  static_assert( ::blaze::And< ::blaze::IsColumnVector<T1> \
107  , ::blaze::IsRowVector<T2> \
108  >::value, "Invalid vector/vector multiplication expression detected" )
109 //*************************************************************************************************
110 
111 
112 
113 
114 //=================================================================================================
115 //
116 // MUST_NOT_FORM_VALID_VECTVECMULTEXPR CONSTRAINT
117 //
118 //=================================================================================================
119 
120 //*************************************************************************************************
127 #define BLAZE_CONSTRAINT_MUST_NOT_FORM_VALID_VECTVECMULTEXPR(T1,T2) \
128  static_assert( ::blaze::Not< ::blaze::And< ::blaze::IsColumnVector<T1> \
129  , ::blaze::IsRowVector<T2> > \
130  >::value, "Valid vector/vector multiplication expression detected" )
131 //*************************************************************************************************
132 
133 } // namespace blaze
134 
135 #endif
Header file for the IsRowVector type trait.
Header file for the And class template.
Namespace of the Blaze C++ math library.
Definition: Blaze.h:57
Header file for the IsVecTVecMultExpr type trait class.
Header file for the Not class template.
Header file for the IsColumnVector type trait.