All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Groups Pages
IsVecVecAddExpr.h
Go to the documentation of this file.
1 //=================================================================================================
20 //=================================================================================================
21 
22 #ifndef _BLAZE_MATH_TYPETRAITS_ISVECVECADDEXPR_H_
23 #define _BLAZE_MATH_TYPETRAITS_ISVECVECADDEXPR_H_
24 
25 
26 //*************************************************************************************************
27 // Includes
28 //*************************************************************************************************
29 
30 #include <boost/type_traits/remove_cv.hpp>
32 #include <blaze/util/FalseType.h>
33 #include <blaze/util/TrueType.h>
34 
35 
36 namespace blaze {
37 
38 //=================================================================================================
39 //
40 // CLASS DEFINITION
41 //
42 //=================================================================================================
43 
44 //*************************************************************************************************
49 template< typename T >
50 struct IsVecVecAddExprHelper
51 {
52  //**********************************************************************************************
53  enum { value = 0 };
54  typedef FalseType Type;
55  //**********************************************************************************************
56 };
58 //*************************************************************************************************
59 
60 
61 //*************************************************************************************************
63 
64 template< typename VT1, typename VT2, bool TF >
65 struct IsVecVecAddExprHelper< DVecDVecAddExpr<VT1,VT2,TF> > : public TrueType
66 {
67  public:
68  //**********************************************************************************************
69  enum { value = 1 };
70  typedef TrueType Type;
71  //**********************************************************************************************
72 };
74 //*************************************************************************************************
75 
76 
77 //*************************************************************************************************
79 
80 template< typename VT1, typename VT2, bool TF >
81 struct IsVecVecAddExprHelper< DVecSVecAddExpr<VT1,VT2,TF> > : public TrueType
82 {
83  public:
84  //**********************************************************************************************
85  enum { value = 1 };
86  typedef TrueType Type;
87  //**********************************************************************************************
88 };
90 //*************************************************************************************************
91 
92 
93 //*************************************************************************************************
95 
96 template< typename VT1, typename VT2, bool TF >
97 struct IsVecVecAddExprHelper< SVecSVecAddExpr<VT1,VT2,TF> > : public TrueType
98 {
99  public:
100  //**********************************************************************************************
101  enum { value = 1 };
102  typedef TrueType Type;
103  //**********************************************************************************************
104 };
106 //*************************************************************************************************
107 
108 
109 //*************************************************************************************************
119 template< typename T >
120 struct IsVecVecAddExpr : public IsVecVecAddExprHelper< typename boost::remove_cv<T>::type >::Type
121 {
122  public:
123  //**********************************************************************************************
125  enum { value = IsVecVecAddExprHelper< typename boost::remove_cv<T>::type >::value };
126  typedef typename IsVecVecAddExprHelper< typename boost::remove_cv<T>::type >::Type Type;
128  //**********************************************************************************************
129 };
130 //*************************************************************************************************
131 
132 } // namespace blaze
133 
134 #endif