All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Groups Pages
EvalExprTrait.h
Go to the documentation of this file.
1 //=================================================================================================
20 //=================================================================================================
21 
22 #ifndef _BLAZE_MATH_TRAITS_EVALEXPRTRAIT_H_
23 #define _BLAZE_MATH_TRAITS_EVALEXPRTRAIT_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 T > // Type of the evaluation operand
74 {
75  private:
76  //**struct Failure******************************************************************************
78  struct Failure { typedef INVALID_TYPE Type; };
80  //**********************************************************************************************
81 
82  //**********************************************************************************************
86  //**********************************************************************************************
87 
88  //**********************************************************************************************
90  typedef typename If< IsMatrix<T>
91  , typename If< IsDenseMatrix<T>
92  , typename If< IsRowMajorMatrix<T>
95  >::Type
96  , typename If< IsRowMajorMatrix<T>
99  >::Type
100  >::Type
101  , typename If< IsVector<T>
102  , typename If< IsDenseVector<T>
103  , typename If< IsTransposeVector<T>
106  >::Type
107  , typename If< IsTransposeVector<T>
110  >::Type
111  >::Type
112  , Failure
113  >::Type
114  >::Type Tmp;
115 
116  typedef typename RemoveReference< typename RemoveCV<T>::Type >::Type Type1;
118  //**********************************************************************************************
119 
120  public:
121  //**********************************************************************************************
123  typedef typename SelectType< qualified, EvalExprTrait<Type1>, Tmp >::Type::Type Type;
125  //**********************************************************************************************
126 };
127 //*************************************************************************************************
128 
129 } // namespace blaze
130 
131 #endif