Blaze 3.9
IsStrictlyLower.h
Go to the documentation of this file.
1//=================================================================================================
33//=================================================================================================
34
35#ifndef _BLAZE_MATH_TYPETRAITS_ISSTRICTLYLOWER_H_
36#define _BLAZE_MATH_TYPETRAITS_ISSTRICTLYLOWER_H_
37
38
39//*************************************************************************************************
40// Includes
41//*************************************************************************************************
42
44#include <blaze/util/EnableIf.h>
47
48
49namespace blaze {
50
51//=================================================================================================
52//
53// CLASS DEFINITION
54//
55//=================================================================================================
56
57//*************************************************************************************************
59template< typename T > struct IsStrictlyLower;
61//*************************************************************************************************
62
63
64//*************************************************************************************************
69template< typename T
70 , typename = void >
71struct IsStrictlyLowerHelper
72 : public FalseType
73{};
74
75template< typename T > // Type of the operand
76struct IsStrictlyLowerHelper< T, EnableIf_t< IsExpression_v<T> && !IsSame_v<T,typename T::ResultType> > >
77 : public IsStrictlyLower< typename T::ResultType >::Type
78{};
80//*************************************************************************************************
81
82
83//*************************************************************************************************
113template< typename T >
115 : public IsStrictlyLowerHelper<T>
116{};
117//*************************************************************************************************
118
119
120//*************************************************************************************************
125template< typename T >
126struct IsStrictlyLower< const T >
127 : public IsStrictlyLower<T>
128{};
130//*************************************************************************************************
131
132
133//*************************************************************************************************
138template< typename T >
139struct IsStrictlyLower< volatile T >
140 : public IsStrictlyLower<T>
141{};
143//*************************************************************************************************
144
145
146//*************************************************************************************************
151template< typename T >
152struct IsStrictlyLower< const volatile T >
153 : public IsStrictlyLower<T>
154{};
156//*************************************************************************************************
157
158
159//*************************************************************************************************
172template< typename T >
174//*************************************************************************************************
175
176} // namespace blaze
177
178#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.
constexpr bool IsExpression_v
Auxiliary variable template for the IsExpression type trait.
Definition: IsExpression.h:114
constexpr bool IsStrictlyLower_v
Auxiliary variable template for the IsStrictlyLower type trait.
Definition: IsStrictlyLower.h:173
BoolConstant< false > FalseType
Type/value traits base class.
Definition: IntegralConstant.h:121
typename EnableIf< Condition, T >::Type EnableIf_t
Auxiliary type for the EnableIf class template.
Definition: EnableIf.h:138
Compile time check for strictly lower triangular matrices.
Definition: IsStrictlyLower.h:116