All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Groups Pages
IsTemporary.h
Go to the documentation of this file.
1 //=================================================================================================
20 //=================================================================================================
21 
22 #ifndef _BLAZE_MATH_TYPETRAITS_ISTEMPORARY_H_
23 #define _BLAZE_MATH_TYPETRAITS_ISTEMPORARY_H_
24 
25 
26 //*************************************************************************************************
27 // Includes
28 //*************************************************************************************************
29 
33 #include <blaze/util/FalseType.h>
34 #include <blaze/util/SelectType.h>
35 #include <blaze/util/TrueType.h>
36 
37 
38 namespace blaze {
39 
40 //=================================================================================================
41 //
42 // CLASS DEFINITION
43 //
44 //=================================================================================================
45 
46 //*************************************************************************************************
51 template< typename T >
52 struct IsTemporaryHelper
53 {
54  //**********************************************************************************************
55  enum { value = !IsReference<T>::value && !IsNumeric<T>::value && !IsExpression<T>::value };
56  typedef typename SelectType<value,TrueType,FalseType>::Type Type;
57  //**********************************************************************************************
58 };
60 //*************************************************************************************************
61 
62 
63 //*************************************************************************************************
73 template< typename T >
74 struct IsTemporary : public IsTemporaryHelper<T>::Type
75 {
76  public:
77  //**********************************************************************************************
79  enum { value = IsTemporaryHelper<T>::value };
80  typedef typename IsTemporaryHelper<T>::Type Type;
82  //**********************************************************************************************
83 };
84 //*************************************************************************************************
85 
86 } // namespace blaze
87 
88 #endif