All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Groups Pages
CanAlias.h
Go to the documentation of this file.
1 //=================================================================================================
20 //=================================================================================================
21 
22 #ifndef _BLAZE_MATH_TYPETRAITS_CANALIAS_H_
23 #define _BLAZE_MATH_TYPETRAITS_CANALIAS_H_
24 
25 
26 //*************************************************************************************************
27 // Includes
28 //*************************************************************************************************
29 
30 #include <blaze/util/FalseType.h>
31 #include <blaze/util/SelectType.h>
32 #include <blaze/util/TrueType.h>
33 
34 
35 namespace blaze {
36 
37 //=================================================================================================
38 //
39 // CLASS DEFINITION
40 //
41 //=================================================================================================
42 
43 //*************************************************************************************************
48 template< typename T >
49 struct CanAliasHelper
50 {
51  //**********************************************************************************************
52  enum { value = T::canAlias };
53  typedef typename SelectType<value,TrueType,FalseType>::Type Type;
54  //**********************************************************************************************
55 };
57 //*************************************************************************************************
58 
59 
60 //*************************************************************************************************
70 template< typename T >
71 struct CanAlias : public CanAliasHelper<T>::Type
72 {
73  public:
74  //**********************************************************************************************
76  enum { value = CanAliasHelper<T>::value };
77  typedef typename CanAliasHelper<T>::Type Type;
79  //**********************************************************************************************
80 };
81 //*************************************************************************************************
82 
83 } // namespace blaze
84 
85 #endif