Blaze 3.9
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
51namespace blaze {
52
53//=================================================================================================
54//
55// CLASS DEFINITION
56//
57//=================================================================================================
58
59//*************************************************************************************************
61template< typename T > struct IsLower;
63//*************************************************************************************************
64
65
66//*************************************************************************************************
71template< typename T
72 , typename = void >
73struct IsLowerHelper
74 : public BoolConstant< IsUniLower_v<T> || IsStrictlyLower_v<T> >
75{};
76
77template< typename T > // Type of the operand
78struct 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//*************************************************************************************************
115template< typename T >
117 : public IsLowerHelper<T>
118{};
119//*************************************************************************************************
120
121
122//*************************************************************************************************
127template< typename T >
128struct IsLower< const T >
129 : public IsLower<T>
130{};
132//*************************************************************************************************
133
134
135//*************************************************************************************************
140template< typename T >
141struct IsLower< volatile T >
142 : public IsLower<T>
143{};
145//*************************************************************************************************
146
147
148//*************************************************************************************************
153template< typename T >
154struct IsLower< const volatile T >
155 : public IsLower<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 IsStrictlyLower type trait.
Header file for the IsUniLower type trait.
constexpr bool IsExpression_v
Auxiliary variable template for the IsExpression type trait.
Definition: IsExpression.h:114
constexpr bool IsLower_v
Auxiliary variable template for the IsLower type trait.
Definition: IsLower.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 lower triangular matrices.
Definition: IsLower.h:118