Blaze  3.6
IsLower.h
Go to the documentation of this file.
1 //=================================================================================================
33 //=================================================================================================
34 
35 #ifndef _BLAZE_MATH_TYPETRAITS_ISLOWER_H_
36 #define _BLAZE_MATH_TYPETRAITS_ISLOWER_H_
37 
38 
39 //*************************************************************************************************
40 // Includes
41 //*************************************************************************************************
42 
46 #include <blaze/util/EnableIf.h>
49 
50 
51 namespace blaze {
52 
53 //=================================================================================================
54 //
55 // CLASS DEFINITION
56 //
57 //=================================================================================================
58 
59 //*************************************************************************************************
61 template< typename T > struct IsLower;
63 //*************************************************************************************************
64 
65 
66 //*************************************************************************************************
71 template< typename T
72  , typename = void >
73 struct IsLowerHelper
74  : public BoolConstant< IsUniLower_v<T> || IsStrictlyLower_v<T> >
75 {};
76 
77 template< typename T > // Type of the operand
78 struct IsLowerHelper< T, EnableIf_t< IsExpression_v<T> && !IsSame_v<T,typename T::ResultType> > >
79  : public IsLower< typename T::ResultType >::Type
80 {};
82 //*************************************************************************************************
83 
84 
85 //*************************************************************************************************
115 template< typename T >
116 struct IsLower
117  : public IsLowerHelper<T>
118 {};
119 //*************************************************************************************************
120 
121 
122 //*************************************************************************************************
127 template< typename T >
128 struct IsLower< const T >
129  : public IsLower<T>
130 {};
132 //*************************************************************************************************
133 
134 
135 //*************************************************************************************************
140 template< typename T >
141 struct IsLower< volatile T >
142  : public IsLower<T>
143 {};
145 //*************************************************************************************************
146 
147 
148 //*************************************************************************************************
153 template< typename T >
154 struct IsLower< const volatile T >
155  : public IsLower<T>
156 {};
158 //*************************************************************************************************
159 
160 
161 //*************************************************************************************************
174 template< typename T >
175 constexpr bool IsLower_v = IsLower<T>::value;
176 //*************************************************************************************************
177 
178 } // namespace blaze
179 
180 #endif
Header file for the IsSame and IsStrictlySame type traits.
Compile time check for lower triangular matrices.This type trait tests whether or not the given templ...
Definition: IsLower.h:116
constexpr bool IsLower_v
Auxiliary variable template for the IsLower type trait.The IsLower_v variable template provides a con...
Definition: IsLower.h:175
Header file for the IsUniLower type trait.
typename EnableIf< Condition, T >::Type EnableIf_t
Auxiliary type for the EnableIf class template.The EnableIf_t alias declaration provides a convenient...
Definition: EnableIf.h:138
Namespace of the Blaze C++ math library.
Definition: Blaze.h:58
constexpr bool IsExpression_v
Auxiliary variable template for the IsExpression type trait.The IsExpression_v variable template prov...
Definition: IsExpression.h:130
Header file for the EnableIf class template.
Header file for the IsStrictlyLower type trait.
IntegralConstant< bool, B > BoolConstant
Generic wrapper for a compile time constant boolean value.The BoolConstant alias template represents ...
Definition: IntegralConstant.h:110
Header file for the IntegralConstant class template.
Header file for the IsExpression type trait class.