IsSame.h
Go to the documentation of this file.
1 //=================================================================================================
33 //=================================================================================================
34 
35 #ifndef _BLAZE_UTIL_TYPETRAITS_ISSAME_H_
36 #define _BLAZE_UTIL_TYPETRAITS_ISSAME_H_
37 
38 
39 //*************************************************************************************************
40 // Includes
41 //*************************************************************************************************
42 
43 #include <blaze/util/FalseType.h>
44 #include <blaze/util/SelectType.h>
45 #include <blaze/util/TrueType.h>
47 
48 
49 namespace blaze {
50 
51 //=================================================================================================
52 //
53 // CLASS DEFINITION
54 //
55 //=================================================================================================
56 
57 //*************************************************************************************************
76 template< typename A, typename B >
77 struct IsStrictlySame : public FalseType
78 {
79  public:
80  //**********************************************************************************************
82  enum { value = 0 };
83  typedef FalseType Type;
85  //**********************************************************************************************
86 };
87 //*************************************************************************************************
88 
89 
90 //*************************************************************************************************
92 template< typename T >
94 struct IsStrictlySame<T,T> : public TrueType
95 {
96  public:
97  //**********************************************************************************************
98  enum { value = 1 };
99  typedef TrueType Type;
100  //**********************************************************************************************
101 };
103 //*************************************************************************************************
104 
105 
106 
107 
108 //=================================================================================================
109 //
110 // CLASS DEFINITION
111 //
112 //=================================================================================================
113 
114 //*************************************************************************************************
119 template< typename A, typename B >
120 struct IsSameHelper
121 {
122  private:
123  //**********************************************************************************************
124  typedef typename RemoveCV<A>::Type T1;
125  typedef typename RemoveCV<B>::Type T2;
126  //**********************************************************************************************
127 
128  public:
129  //**********************************************************************************************
130  enum { value = IsStrictlySame<T1,T2>::value };
131  typedef typename IsStrictlySame<T1,T2>::Type Type;
132  //**********************************************************************************************
133 };
135 //*************************************************************************************************
136 
137 
138 //*************************************************************************************************
157 template< typename A, typename B >
158 struct IsSame : public IsSameHelper<A,B>::Type
159 {
160  public:
161  //**********************************************************************************************
163  enum { value = IsSameHelper<A,B>::value };
164  typedef typename IsSameHelper<A,B>::Type Type;
166  //**********************************************************************************************
167 };
168 //*************************************************************************************************
169 
170 } // namespace blaze
171 
172 #endif
Header file for the FalseType type/value trait base class.
Header file for the RemoveCV type trait.
Type relationship analysis.This class tests if the two data types A and B are equal. For this type comparison, the cv-qualifiers of both data types are ignored. If A and B are the same data type (ignoring the cv-qualifiers), then the value member enumeration is set to 1, the nested type definition Type is TrueType, and the class derives from TrueType. Otherwise value is set to 0, Type is FalseType, and the class derives from FalseType.
Definition: IsSame.h:158
Namespace of the Blaze C++ math library.
Definition: Blaze.h:57
Compile time type relationship analysis.This class tests if the two data types A and B are equal...
Definition: IsSame.h:77
Header file for the SelectType class template.
boost::false_type FalseType
Type/value traits base class.The FalseType class is used as base class for type traits and value trai...
Definition: FalseType.h:61
boost::true_type TrueType
Type traits base class.The TrueType class is used as base class for type traits and value traits that...
Definition: TrueType.h:61
Header file for the TrueType type/value trait base class.