General Purpose library for Freestanding C++ and POSIX systems
Nelze vybrat více než 25 témat Téma musí začínat písmenem nebo číslem, může obsahovat pomlčky („-“) a může být dlouhé až 35 znaků.
 
 

37 řádky
725 B

#pragma once
namespace gp{
template<typename T, typename U, typename ...rest>
constexpr T min(T first, U second, rest... args)
{
if constexpr (sizeof...(args) == 0)
{
return first < second ? first : second;
}
else
{
return min(first < second ? first : second, args...);
}
}
template<typename T, typename U, typename ...rest>
constexpr T max(T first, U second, rest... args)
{
if constexpr (sizeof...(args) == 0)
{
return first > second ? first : second;
}
else
{
return max(first > second ? first : second, args...);
}
}
template<typename T>
constexpr T clamp(T first, T value, T last)
{
if(value < first) return first;
if(value > last) return last;
return value;
}
}