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>
65 
66 
67 namespace blaze {
68 
69 //=================================================================================================
70 //
71 // CLASS DEFINITION
72 //
73 //=================================================================================================
74 
75 //*************************************************************************************************
85 template< typename T1 // Type of the left-hand side division operand
86  , typename T2 > // Type of the right-hand side division operand
88 {
89  private:
90  //**struct Failure******************************************************************************
92  struct Failure { typedef INVALID_TYPE Type; };
94  //**********************************************************************************************
95 
96  //**********************************************************************************************
101  //**********************************************************************************************
102 
103  //**********************************************************************************************
105  typedef typename If< IsMatrix<T1>
106  , typename If< IsDenseMatrix<T1>
107  , typename If< IsRowMajorMatrix<T1>
108  , typename If< IsNumeric<T2>
110  , Failure
111  >::Type
112  , typename If< IsNumeric<T2>
114  , Failure
115  >::Type
116  >::Type
117  , typename If< IsRowMajorMatrix<T1>
118  , typename If< IsNumeric<T2>
120  , Failure
121  >::Type
122  , typename If< IsNumeric<T2>
124  , Failure
125  >::Type
126  >::Type
127  >::Type
128  , typename If< IsVector<T1>
129  , typename If< IsDenseVector<T1>
130  , typename If< IsRowVector<T1>
131  , typename If< IsNumeric<T2>
133  , Failure
134  >::Type
135  , typename If< IsNumeric<T2>
137  , Failure
138  >::Type
139  >::Type
140  , typename If< IsRowVector<T1>
141  , typename If< IsNumeric<T2>
143  , Failure
144  >::Type
145  , typename If< IsNumeric<T2>
147  , Failure
148  >::Type
149  >::Type
150  >::Type
151  , typename If< IsNumeric<T1>
152  , typename If< IsNumeric<T2>
154  , Failure
155  >::Type
156  , Failure
157  >::Type
158  >::Type
159  >::Type Tmp;
160 
161  typedef typename RemoveReference< typename RemoveCV<T1>::Type >::Type Type1;
162  typedef typename RemoveReference< typename RemoveCV<T2>::Type >::Type Type2;
164  //**********************************************************************************************
165 
166  public:
167  //**********************************************************************************************
169  typedef typename SelectType< qualified, DivExprTrait<Type1,Type2>, Tmp >::Type::Type Type;
171  //**********************************************************************************************
172 };
173 //*************************************************************************************************
174 
175 } // namespace blaze
176 
177 #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:130
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:130
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:87
Header file for the DVecScalarDivExprTrait class template.
Compile time type selection.The SelectType class template selects one of the two given types T1 and T...
Definition: SelectType.h:59
Header file for the If class template.
Evaluation of the expression type of a transpose sparse matrix/scalar division.Via this type trait it...
Definition: TSMatScalarDivExprTrait.h:130
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:130
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:130
Evaluation of the expression type of a dense matrix/scalar division.Via this type trait it is possibl...
Definition: DMatScalarDivExprTrait.h:130
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:130
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:141
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:130