35#ifndef _BLAZE_UTIL_ALGORITHMS_MIN_H_
36#define _BLAZE_UTIL_ALGORITHMS_MIN_H_
73template<
typename T1,
typename T2
74 ,
typename R1 = RemoveCVRef_t<T1>
75 ,
typename R2 = RemoveCVRef_t<T2>
76 , EnableIf_t< HasLessThan_v<R2,R1> &&
77 !( IsSigned_v<R1> && IsUnsigned_v<R2> ) &&
78 !( IsUnsigned_v<R1> && IsSigned_v<R2> ) >* =
nullptr >
79constexpr decltype(
auto)
min( T1&& a, T2&& b )
81 using Result =
decltype( b < a ? std::forward<T2>( b ) : std::forward<T1>( a ) );
84 return static_cast<Return
>( b < a ? std::forward<T2>( b ) : std::forward<T1>( a ) );
101template<
typename T1,
typename T2,
typename T3 >
102constexpr decltype(
auto)
min( T1&& a, T2&& b, T3&& c )
107 return min(
min( forward<T1>( a ), forward<T2>( b ) ), forward<T3>( c ) );
125template<
typename T1,
typename T2,
typename T3,
typename... Ts >
126constexpr decltype(
auto)
min( T1&& a, T2&& b, T3&& c, Ts&&... args )
131 return min(
min(
min( forward<T1>( a ), forward<T2>( b ) ), forward<T3>( c ) ), forward<Ts>( args )... );
Header file for the EnableIf class template.
Header file for the HasLessThan type trait.
Header file for the If class template.
Header file for the IsSigned type trait.
Header file for the IsUnsigned type trait.
Header file for the RemoveCVRef type trait.
Header file for the RemoveConst type trait.
Header file for the RemoveRValueReference type trait.
constexpr decltype(auto) min(T1 &&a, T2 &&b, T3 &&c, Ts &&... args)
Minimum function for at least four values/objects.
Definition: Min.h:126
typename RemoveConst< T >::Type RemoveConst_t
Auxiliary alias declaration for the RemoveConst type trait.
Definition: RemoveConst.h:96