Blaze  3.6
TVecMatMultExpr.h
Go to the documentation of this file.
1 //=================================================================================================
33 //=================================================================================================
34 
35 #ifndef _BLAZE_MATH_CONSTRAINTS_TVECMATMULTEXPR_H_
36 #define _BLAZE_MATH_CONSTRAINTS_TVECMATMULTEXPR_H_
37 
38 
39 //*************************************************************************************************
40 // Includes
41 //*************************************************************************************************
42 
47 
48 
49 namespace blaze {
50 
51 //=================================================================================================
52 //
53 // MUST_BE_TVECMATMULTEXPR_TYPE CONSTRAINT
54 //
55 //=================================================================================================
56 
57 //*************************************************************************************************
64 #define BLAZE_CONSTRAINT_MUST_BE_TVECMATMULTEXPR_TYPE(T) \
65  static_assert( ::blaze::IsTVecMatMultExpr_v<T>, "Non-vector/matrix multiplication expression type detected" )
66 //*************************************************************************************************
67 
68 
69 
70 
71 //=================================================================================================
72 //
73 // MUST_NOT_BE_TVECMATMULTEXPR_TYPE CONSTRAINT
74 //
75 //=================================================================================================
76 
77 //*************************************************************************************************
84 #define BLAZE_CONSTRAINT_MUST_NOT_BE_TVECMATMULTEXPR_TYPE(T) \
85  static_assert( !::blaze::IsTVecMatMultExpr_v<T>, "Vector/matrix multiplication expression type detected" )
86 //*************************************************************************************************
87 
88 
89 
90 
91 //=================================================================================================
92 //
93 // MUST_FORM_VALID_TVECMATMULTEXPR CONSTRAINT
94 //
95 //=================================================================================================
96 
97 //*************************************************************************************************
104 #define BLAZE_CONSTRAINT_MUST_FORM_VALID_TVECMATMULTEXPR(T1,T2) \
105  static_assert( ::blaze::IsRowVector_v<T1> && \
106  ::blaze::IsMatrix_v<T2> && \
107  ( ( ::blaze::Size_v<T1,0UL> == -1L ) || \
108  ( ::blaze::Size_v<T2,0UL> == -1L ) || \
109  ( ::blaze::Size_v<T1,0UL> == ::blaze::Size_v<T2,0UL> ) ) \
110  , "Invalid vector/matrix multiplication expression detected" )
111 //*************************************************************************************************
112 
113 } // namespace blaze
114 
115 #endif
Header file for the IsTVecMatMultExpr type trait class.
Header file for the IsRowVector type trait.
Header file for the IsMatrix type trait.
Namespace of the Blaze C++ math library.
Definition: Blaze.h:58
Header file for the Size type trait.