All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Groups Pages
IsVecVecSubExpr.h
Go to the documentation of this file.
1 //=================================================================================================
20 //=================================================================================================
21 
22 #ifndef _BLAZE_MATH_TYPETRAITS_ISVECVECSUBEXPR_H_
23 #define _BLAZE_MATH_TYPETRAITS_ISVECVECSUBEXPR_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 IsVecVecSubExprHelper
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 IsVecVecSubExprHelper< DVecDVecSubExpr<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 IsVecVecSubExprHelper< DVecSVecSubExpr<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 IsVecVecSubExprHelper< SVecDVecSubExpr<VT1,VT2,TF> > : public TrueType
98 {
99  public:
100  //**********************************************************************************************
101  enum { value = 1 };
102  typedef TrueType Type;
103  //**********************************************************************************************
104 };
106 //*************************************************************************************************
107 
108 
109 //*************************************************************************************************
111 
112 template< typename VT1, typename VT2, bool TF >
113 struct IsVecVecSubExprHelper< SVecSVecSubExpr<VT1,VT2,TF> > : public TrueType
114 {
115  public:
116  //**********************************************************************************************
117  enum { value = 1 };
118  typedef TrueType Type;
119  //**********************************************************************************************
120 };
122 //*************************************************************************************************
123 
124 
125 //*************************************************************************************************
135 template< typename T >
136 struct IsVecVecSubExpr : public IsVecVecSubExprHelper< typename boost::remove_cv<T>::type >::Type
137 {
138  public:
139  //**********************************************************************************************
141  enum { value = IsVecVecSubExprHelper< typename boost::remove_cv<T>::type >::value };
142  typedef typename IsVecVecSubExprHelper< typename boost::remove_cv<T>::type >::Type Type;
144  //**********************************************************************************************
145 };
146 //*************************************************************************************************
147 
148 } // namespace blaze
149 
150 #endif