All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Groups Pages
DivExprTrait.h
Go to the documentation of this file.
1 //=================================================================================================
20 //=================================================================================================
21 
22 #ifndef _BLAZE_MATH_TRAITS_DIVEXPRTRAIT_H_
23 #define _BLAZE_MATH_TRAITS_DIVEXPRTRAIT_H_
24 
25 
26 //*************************************************************************************************
27 // Includes
28 //*************************************************************************************************
29 
44 #include <blaze/util/InvalidType.h>
45 #include <blaze/util/mpl/If.h>
52 
53 
54 namespace blaze {
55 
56 //=================================================================================================
57 //
58 // CLASS DEFINITION
59 //
60 //=================================================================================================
61 
62 //*************************************************************************************************
72 template< typename T1 // Type of the left-hand side division operand
73  , typename T2 > // Type of the right-hand side division operand
75 {
76  private:
77  //**struct Failure******************************************************************************
79  struct Failure { typedef INVALID_TYPE Type; };
81  //**********************************************************************************************
82 
83  //**********************************************************************************************
88  //**********************************************************************************************
89 
90  //**********************************************************************************************
92  typedef typename If< IsMatrix<T1>
93  , typename If< IsDenseMatrix<T1>
94  , typename If< IsRowMajorMatrix<T1>
95  , typename If< IsNumeric<T2>
97  , Failure
98  >::Type
99  , typename If< IsNumeric<T2>
101  , Failure
102  >::Type
103  >::Type
104  , typename If< IsRowMajorMatrix<T1>
105  , typename If< IsNumeric<T2>
107  , Failure
108  >::Type
109  , typename If< IsNumeric<T2>
111  , Failure
112  >::Type
113  >::Type
114  >::Type
115  , typename If< IsVector<T1>
116  , typename If< IsDenseVector<T1>
117  , typename If< IsTransposeVector<T1>
118  , typename If< IsNumeric<T2>
120  , Failure
121  >::Type
122  , typename If< IsNumeric<T2>
124  , Failure
125  >::Type
126  >::Type
127  , typename If< IsTransposeVector<T1>
128  , typename If< IsNumeric<T2>
130  , Failure
131  >::Type
132  , typename If< IsNumeric<T2>
134  , Failure
135  >::Type
136  >::Type
137  >::Type
138  , typename If< IsNumeric<T1>
139  , typename If< IsNumeric<T2>
141  , Failure
142  >::Type
143  , Failure
144  >::Type
145  >::Type
146  >::Type Tmp;
147 
148  typedef typename RemoveReference< typename RemoveCV<T1>::Type >::Type Type1;
149  typedef typename RemoveReference< typename RemoveCV<T2>::Type >::Type Type2;
151  //**********************************************************************************************
152 
153  public:
154  //**********************************************************************************************
156  typedef typename SelectType< qualified, DivExprTrait<Type1,Type2>, Tmp >::Type::Type Type;
158  //**********************************************************************************************
159 };
160 //*************************************************************************************************
161 
162 } // namespace blaze
163 
164 #endif