Blaze 3.9
HasMin.h
Go to the documentation of this file.
1//=================================================================================================
33//=================================================================================================
34
35#ifndef _BLAZE_MATH_TYPETRAITS_HASMIN_H_
36#define _BLAZE_MATH_TYPETRAITS_HASMIN_H_
37
38
39//*************************************************************************************************
40// Includes
41//*************************************************************************************************
42
43#include <utility>
45#include <blaze/util/Complex.h>
46#include <blaze/util/EnableIf.h>
49
50
51namespace blaze {
52
53//=================================================================================================
54//
55// CLASS DEFINITION
56//
57//=================================================================================================
58
59//*************************************************************************************************
64template< typename T1, typename T2, typename = void >
65struct HasMinHelper
66 : public FalseType
67{};
69//*************************************************************************************************
70
71
72//*************************************************************************************************
77template< typename T1, typename T2 >
78struct HasMinHelper< T1, T2, Void_t< decltype( min( std::declval<T1>(), std::declval<T2>() ) ) > >
79 : public TrueType
80{};
82//*************************************************************************************************
83
84
85//*************************************************************************************************
105template< typename T1, typename T2, typename = void >
106struct HasMin
107 : public HasMinHelper<T1,T2>
108{};
109//*************************************************************************************************
110
111
112//*************************************************************************************************
117template< typename T >
118struct HasMin< complex<T>, complex<T> >
119 : public FalseType
120{};
122//*************************************************************************************************
123
124
125//*************************************************************************************************
130template< typename T1, typename T2 >
131struct HasMin< T1, T2, EnableIf_t< IsVector_v<T1> && IsVector_v<T2> > >
132 : public HasMin< typename T1::ElementType, typename T2::ElementType >
133{};
135//*************************************************************************************************
136
137
138//*************************************************************************************************
151template< typename T1, typename T2 >
153//*************************************************************************************************
154
155} // namespace blaze
156
157#endif
Header file for the complex data type.
Header file for the EnableIf class template.
Header file for the IntegralConstant class template.
Header file for the IsVector type trait.
decltype(auto) min(const DenseMatrix< MT1, SO1 > &lhs, const DenseMatrix< MT2, SO2 > &rhs)
Computes the componentwise minimum of the dense matrices lhs and rhs.
Definition: DMatDMatMapExpr.h:1339
constexpr bool IsVector_v
Auxiliary variable template for the IsVector type trait.
Definition: IsVector.h:125
constexpr bool HasMin_v
Auxiliary variable template for the HasMin type trait.
Definition: HasMin.h:152
void Void_t
Compile time type check.
Definition: Void.h:64
BoolConstant< true > TrueType
Type traits base class.
Definition: IntegralConstant.h:132
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
Availability of a min() operation for the given data types.
Definition: HasMin.h:108
Generic wrapper for a compile time constant integral value.
Definition: IntegralConstant.h:74
Header file for the Void type trait.