piMin/piMax can accept any arguments count

This commit is contained in:
2023-06-19 21:35:49 +03:00
parent 1a214cff4e
commit c4766f8f5b

View File

@@ -243,40 +243,15 @@ inline constexpr T piAbs(const T & v) {
return (v >= T(0) ? v : -v);
}
//! \~\brief
//! \~english Templated function return minimum of two values
//! \~russian Шаблонный метод, возвращающий минимум из двух значений
//! \~\details
//! \~english
//! There are some macros:
//! - \c piMins for "short"
//! - \c piMini for "int"
//! - \c piMinl for "long"
//! - \c piMinll for "llong"
//! - \c piMinf for "float"
//! - \c piMind for "double"
//!
//! Example:
//! \snippet piincludes.cpp min2
//! \~russian
//! Есть несколько макросов:
//! - \c piMins для "short"
//! - \c piMini для "int"
//! - \c piMinl для "long"
//! - \c piMinll для "llong"
//! - \c piMinf для "float"
//! - \c piMind для "double"
//!
//! Пример:
//! \snippet piincludes.cpp min2
template<typename T>
inline constexpr T piMin(const T & f, const T & s) {
constexpr T piMin(const T & f, const T & s) {
return ((f > s) ? s : f);
}
//! \~\brief
//! \~english Templated function return minimum of tree values
//! \~russian Шаблонный метод, возвращающий минимум из трех значений
//! \~english Templated function return minimum of several values
//! \~russian Шаблонный метод, возвращающий минимум из нескольких значений
//! \~\details
//! \~english
//! There are some macros:
@@ -288,7 +263,7 @@ inline constexpr T piMin(const T & f, const T & s) {
//! - \c piMind for "double"
//!
//! Example:
//! \snippet piincludes.cpp min3
//! \snippet piincludes.cpp min2
//! \~russian
//! Есть несколько макросов:
//! - \c piMins для "short"
@@ -299,46 +274,21 @@ inline constexpr T piMin(const T & f, const T & s) {
//! - \c piMind для "double"
//!
//! Пример:
//! \snippet piincludes.cpp min3
template<typename T>
inline constexpr T piMin(const T & f, const T & s, const T & t) {
return ((f < s && f < t) ? f : ((s < t) ? s : t));
//! \snippet piincludes.cpp min2
template<typename T, typename... Args>
constexpr T piMin(const T & f, const T & s, const Args &... args) {
return piMin<T>(piMin<T>(f, s), args...);
}
//! \~\brief
//! \~english Templated function return maximum of two values
//! \~russian Шаблонный метод, возвращающий максимум из двух значений
//! \~\details
//! \~english
//! There are some macros:
//! - \c piMaxs for "short"
//! - \c piMaxi for "int"
//! - \c piMaxl for "long"
//! - \c piMaxll for "llong"
//! - \c piMaxf for "float"
//! - \c piMaxd for "double"
//!
//! Example:
//! \snippet piincludes.cpp max2
//! \~russian
//! Есть несколько макросов:
//! - \c piMaxs для "short"
//! - \c piMaxi для "int"
//! - \c piMaxl для "long"
//! - \c piMaxll для "llong"
//! - \c piMaxf для "float"
//! - \c piMaxd для "double"
//!
//! Пример:
//! \snippet piincludes.cpp max2
template<typename T>
inline constexpr T piMax(const T & f, const T & s) {
constexpr T piMax(const T & f, const T & s) {
return ((f < s) ? s : f);
}
//! \~\brief
//! \~english Templated function return maximum of tree values
//! \~russian Шаблонный метод, возвращающий максимум из трех значений
//! \~english Templated function return maximum of several values
//! \~russian Шаблонный метод, возвращающий максимум из нескольких значений
//! \~\details
//! \~english
//! There are some macros:
@@ -350,7 +300,7 @@ inline constexpr T piMax(const T & f, const T & s) {
//! - \c piMaxd for "double"
//!
//! Example:
//! \snippet piincludes.cpp max3
//! \snippet piincludes.cpp max2
//! \~russian
//! Есть несколько макросов:
//! - \c piMaxs для "short"
@@ -361,12 +311,13 @@ inline constexpr T piMax(const T & f, const T & s) {
//! - \c piMaxd для "double"
//!
//! Пример:
//! \snippet piincludes.cpp max3
template<typename T>
inline constexpr T piMax(const T & f, const T & s, const T & t) {
return ((f > s && f > t) ? f : ((s > t) ? s : t));
//! \snippet piincludes.cpp max2
template<typename T, typename... Args>
constexpr T piMax(const T & f, const T & s, const Args &... args) {
return piMax<T>(piMax<T>(f, s), args...);
}
//! \~\brief
//! \~english Templated function return clamped value
//! \~russian Шаблонный метод, возвращающий ограниченное значение