IsEvalExpr.h
Go to the documentation of this file.
1 //=================================================================================================
33 //=================================================================================================
34 
35 #ifndef _BLAZE_MATH_TYPETRAITS_ISEVALEXPR_H_
36 #define _BLAZE_MATH_TYPETRAITS_ISEVALEXPR_H_
37 
38 
39 //*************************************************************************************************
40 // Includes
41 //*************************************************************************************************
42 
43 #include <boost/type_traits/is_base_of.hpp>
45 #include <blaze/util/FalseType.h>
46 #include <blaze/util/SelectType.h>
47 #include <blaze/util/TrueType.h>
48 
49 
50 namespace blaze {
51 
52 //=================================================================================================
53 //
54 // CLASS DEFINITION
55 //
56 //=================================================================================================
57 
58 //*************************************************************************************************
63 template< typename T >
64 struct IsEvalExprHelper
65 {
66  //**********************************************************************************************
67  enum { value = boost::is_base_of<EvalExpr,T>::value && !boost::is_base_of<T,EvalExpr>::value };
68  typedef typename SelectType<value,TrueType,FalseType>::Type Type;
69  //**********************************************************************************************
70 };
72 //*************************************************************************************************
73 
74 
75 //*************************************************************************************************
86 template< typename T >
87 struct IsEvalExpr : public IsEvalExprHelper<T>::Type
88 {
89  public:
90  //**********************************************************************************************
92  enum { value = IsEvalExprHelper<T>::value };
93  typedef typename IsEvalExprHelper<T>::Type Type;
95  //**********************************************************************************************
96 };
97 //*************************************************************************************************
98 
99 } // namespace blaze
100 
101 #endif
Header file for the FalseType type/value trait base class.
Namespace of the Blaze C++ math library.
Definition: Blaze.h:57
Header file for the SelectType class template.
Header file for the EvalExpr base class.
Compile time check whether the given type is an evaluation expression template.This type trait class ...
Definition: IsEvalExpr.h:87
Header file for the TrueType type/value trait base class.