All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Groups Pages
TDVecDVecMultExprTrait.h
Go to the documentation of this file.
1 //=================================================================================================
20 //=================================================================================================
21 
22 #ifndef _BLAZE_MATH_TRAITS_TDVECDVECMULTEXPRTRAIT_H_
23 #define _BLAZE_MATH_TRAITS_TDVECDVECMULTEXPRTRAIT_H_
24 
25 
26 //*************************************************************************************************
27 // Includes
28 //*************************************************************************************************
29 
33 #include <blaze/util/InvalidType.h>
34 #include <blaze/util/SelectType.h>
40 
41 
42 namespace blaze {
43 
44 //=================================================================================================
45 //
46 // CLASS DEFINITION
47 //
48 //=================================================================================================
49 
50 //*************************************************************************************************
55 template< typename VT1
56  , typename VT2
57  , bool Valid >
58 struct TDVecDVecMultExprTraitHelper
59 {
60  //**********************************************************************************************
61  typedef INVALID_TYPE Type;
62  //**********************************************************************************************
63 };
65 //*************************************************************************************************
66 
67 
68 //*************************************************************************************************
73 template< typename VT1
74  , typename VT2 >
75 struct TDVecDVecMultExprTraitHelper<VT1,VT2,true>
76 {
77  //**********************************************************************************************
78  typedef typename MultTrait<typename VT1::ElementType,typename VT2::ElementType>::Type Type;
79  //**********************************************************************************************
80 };
82 //*************************************************************************************************
83 
84 
85 //*************************************************************************************************
96 template< typename VT1 // Type of the left-hand side transpose dense vector
97  , typename VT2 > // Type of the right-hand side non-transpose dense vector
99 {
100  private:
101  //**********************************************************************************************
105 
109  //**********************************************************************************************
110 
111  //**********************************************************************************************
113  typedef TDVecDVecMultExprTraitHelper<VT1,VT2,valid> Tmp;
114 
115  typedef typename RemoveReference< typename RemoveCV<VT1>::Type >::Type Type1;
116  typedef typename RemoveReference< typename RemoveCV<VT2>::Type >::Type Type2;
118  //**********************************************************************************************
119 
120  public:
121  //**********************************************************************************************
123  typedef typename SelectType< qualified, TDVecDVecMultExprTrait<Type1,Type2>, Tmp >::Type::Type Type;
125  //**********************************************************************************************
126 };
127 //*************************************************************************************************
128 
129 } // namespace blaze
130 
131 #endif