All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Groups Pages
DivExprTrait.h
Go to the documentation of this file.
1 //=================================================================================================
33 //=================================================================================================
34 
35 #ifndef _BLAZE_MATH_TRAITS_DIVEXPRTRAIT_H_
36 #define _BLAZE_MATH_TRAITS_DIVEXPRTRAIT_H_
37 
38 
39 //*************************************************************************************************
40 // Includes
41 //*************************************************************************************************
42 
57 #include <blaze/util/InvalidType.h>
58 #include <blaze/util/mpl/If.h>
59 #include <blaze/util/mpl/Or.h>
66 
67 
68 namespace blaze {
69 
70 //=================================================================================================
71 //
72 // CLASS DEFINITION
73 //
74 //=================================================================================================
75 
76 //*************************************************************************************************
86 template< typename T1 // Type of the left-hand side division operand
87  , typename T2 > // Type of the right-hand side division operand
89 {
90  private:
91  //**struct Failure******************************************************************************
93  struct Failure { typedef INVALID_TYPE Type; };
95  //**********************************************************************************************
96 
97  //**********************************************************************************************
99  typedef typename If< IsMatrix<T1>
100  , typename If< IsDenseMatrix<T1>
101  , typename If< IsRowMajorMatrix<T1>
102  , typename If< IsNumeric<T2>
104  , Failure
105  >::Type
106  , typename If< IsNumeric<T2>
108  , Failure
109  >::Type
110  >::Type
111  , typename If< IsRowMajorMatrix<T1>
112  , typename If< IsNumeric<T2>
114  , Failure
115  >::Type
116  , typename If< IsNumeric<T2>
118  , Failure
119  >::Type
120  >::Type
121  >::Type
122  , typename If< IsVector<T1>
123  , typename If< IsDenseVector<T1>
124  , typename If< IsRowVector<T1>
125  , typename If< IsNumeric<T2>
127  , Failure
128  >::Type
129  , typename If< IsNumeric<T2>
131  , Failure
132  >::Type
133  >::Type
134  , typename If< IsRowVector<T1>
135  , typename If< IsNumeric<T2>
137  , Failure
138  >::Type
139  , typename If< IsNumeric<T2>
141  , Failure
142  >::Type
143  >::Type
144  >::Type
145  , typename If< IsNumeric<T1>
146  , typename If< IsNumeric<T2>
148  , Failure
149  >::Type
150  , Failure
151  >::Type
152  >::Type
153  >::Type Tmp;
154 
155  typedef typename RemoveReference< typename RemoveCV<T1>::Type >::Type Type1;
156  typedef typename RemoveReference< typename RemoveCV<T2>::Type >::Type Type2;
158  //**********************************************************************************************
159 
160  public:
161  //**********************************************************************************************
165  , DivExprTrait<Type1,Type2>, Tmp >::Type::Type Type;
167  //**********************************************************************************************
168 };
169 //*************************************************************************************************
170 
171 } // namespace blaze
172 
173 #endif
Compile time type selection.The If class template selects one of the two given types T2 and T3 depend...
Definition: If.h:112
Header file for the DMatScalarDivExprTrait class template.
Compile time check for volatile data types.The IsVolatile type trait tests whether or not the given t...
Definition: IsVolatile.h:94
Header file for the SVecScalarDivExprTrait class template.
Header file for the RemoveCV type trait.
Evaluation of the expression type of a sparse matrix/scalar division.Via this type trait it is possib...
Definition: SMatScalarDivExprTrait.h:133
Header file for the TDVecScalarDivExprTrait class template.
Header file for the IsRowVector type trait.
Evaluation of the expression type of a sparse vector/scalar division.Via this type trait it is possib...
Definition: SVecScalarDivExprTrait.h:133
Header file for the IsVolatile type trait.
Header file for the IsMatrix type trait.
Evaluation of the resulting expression type of a division.Via this type trait it is possible to evalu...
Definition: DivExprTrait.h:88
Header file for the DVecScalarDivExprTrait class template.
Header file for the If class template.
Header file for the Or class template.
Evaluation of the expression type of a transpose sparse matrix/scalar division.Via this type trait it...
Definition: TSMatScalarDivExprTrait.h:133
Header file for the IsVector type trait.
Header file for the IsDenseMatrix type trait.
Header file for the IsNumeric type trait.
Removal of reference modifiers.The RemoveCV type trait removes any reference modifiers from the given...
Definition: RemoveReference.h:69
Header file for the IsConst type trait.
Header file for the TSMatScalarDivExprTrait class template.
Utility type for generic codes.
Evaluation of the expression type of a dense vector/scalar division.Via this type trait it is possibl...
Definition: DVecScalarDivExprTrait.h:133
Header file for the division trait.
Evaluation of the expression type of a transpose sparse vector/scalar division.Via this type trait it...
Definition: TSVecScalarDivExprTrait.h:133
Evaluation of the expression type of a dense matrix/scalar division.Via this type trait it is possibl...
Definition: DMatScalarDivExprTrait.h:133
Header file for the IsReference type trait.
Evaluation of the expression type of a transpose dense vector/scalar division.Via this type trait it ...
Definition: TDVecScalarDivExprTrait.h:133
Header file for the RemoveReference type trait.
Compile time check for constant data types.The IsConst type trait tests whether or not the given temp...
Definition: IsConst.h:94
Base template for the DivTrait class.
Definition: DivTrait.h:142
Header file for the IsRowMajorMatrix type trait.
Header file for the SMatScalarDivExprTrait class template.
Compile time type check.This class tests whether the given template parameter T is a reference type (...
Definition: IsReference.h:94
Header file for the TDMatScalarDivExprTrait class template.
Header file for the TSVecScalarDivExprTrait class template.
Evaluation of the expression type of a transpose dense matrix/scalar division.Via this type trait it ...
Definition: TDMatScalarDivExprTrait.h:133