Blaze 3.9
IsUpper.h
Go to the documentation of this file.
1//=================================================================================================
33//=================================================================================================
34
35#ifndef _BLAZE_MATH_TYPETRAITS_ISUPPER_H_
36#define _BLAZE_MATH_TYPETRAITS_ISUPPER_H_
37
38
39//*************************************************************************************************
40// Includes
41//*************************************************************************************************
42
46#include <blaze/util/EnableIf.h>
49
50
51namespace blaze {
52
53//=================================================================================================
54//
55// CLASS DEFINITION
56//
57//=================================================================================================
58
59//*************************************************************************************************
61template< typename T > struct IsUpper;
63//*************************************************************************************************
64
65
66//*************************************************************************************************
71template< typename T
72 , typename = void >
73struct IsUpperHelper
74 : public BoolConstant< IsUniUpper_v<T> || IsStrictlyUpper_v<T> >
75{};
76
77template< typename T > // Type of the operand
78struct IsUpperHelper< T, EnableIf_t< IsExpression_v<T> && !IsSame_v<T,typename T::ResultType> > >
79 : public IsUpper< typename T::ResultType >::Type
80{};
82//*************************************************************************************************
83
84
85//*************************************************************************************************
115template< typename T >
117 : public IsUpperHelper<T>
118{};
119//*************************************************************************************************
120
121
122//*************************************************************************************************
127template< typename T >
128struct IsUpper< const T >
129 : public IsUpper<T>
130{};
132//*************************************************************************************************
133
134
135//*************************************************************************************************
140template< typename T >
141struct IsUpper< volatile T >
142 : public IsUpper<T>
143{};
145//*************************************************************************************************
146
147
148//*************************************************************************************************
153template< typename T >
154struct IsUpper< const volatile T >
155 : public IsUpper<T>
156{};
158//*************************************************************************************************
159
160
161//*************************************************************************************************
174template< typename T >
176//*************************************************************************************************
177
178} // namespace blaze
179
180#endif
Header file for the EnableIf class template.
Header file for the IntegralConstant class template.
Header file for the IsExpression type trait class.
Header file for the IsSame and IsStrictlySame type traits.
Header file for the IsStrictlyUpper type trait.
Header file for the IsUniUpper type trait.
constexpr bool IsExpression_v
Auxiliary variable template for the IsExpression type trait.
Definition: IsExpression.h:114
constexpr bool IsUpper_v
Auxiliary variable template for the IsUpper type trait.
Definition: IsUpper.h:175
typename EnableIf< Condition, T >::Type EnableIf_t
Auxiliary type for the EnableIf class template.
Definition: EnableIf.h:138
IntegralConstant< bool, B > BoolConstant
Generic wrapper for a compile time constant boolean value.
Definition: IntegralConstant.h:110
Compile time check for upper triangular matrices.
Definition: IsUpper.h:118