From 5ea5b5864d5f28d8a5c63d9dda023850e957c791 Mon Sep 17 00:00:00 2001 From: Alexander Smorkalov Date: Mon, 1 Dec 2025 10:08:11 +0300 Subject: [PATCH] Added clamp overload for older compilers. --- modules/dnn/src/layers/resize2_layer.cpp | 16 +++++++++++++--- 1 file changed, 13 insertions(+), 3 deletions(-) diff --git a/modules/dnn/src/layers/resize2_layer.cpp b/modules/dnn/src/layers/resize2_layer.cpp index 6751c890c9..beb4369fde 100644 --- a/modules/dnn/src/layers/resize2_layer.cpp +++ b/modules/dnn/src/layers/resize2_layer.cpp @@ -53,6 +53,16 @@ enum class NearestMode { ROUND_PREFER_FLOOR }; +#if __cplusplus < 201703L +template +static T clamp(T d, T min, T max) +{ + return std::min(std::max(d, min), max); +} +#else +#define clamp std::clamp +#endif + static inline NearestMode parseNearestMode(const String& s) { if (s == "floor") return NearestMode::FLOOR; @@ -106,7 +116,7 @@ static inline void buildNearestIndexMap(std::vector& map, } else { idx = (abs(frac - 0.5f) <= eps) ? f : cvRound(src); } - return std::clamp(idx, 0, inLen - 1); + return clamp(idx, 0, inLen - 1); }; map.resize(outLen); @@ -168,7 +178,7 @@ static inline void buildBilinearIndexAndLerp(std::vector& i0, src = std::min(std::max(src, 0.f), float(inLen - 1) - 1e-6f); int base = int(std::floor(src)); i0[o] = base; - i1[o] = std::clamp(base + 1, 0, inLen - 1); + i1[o] = clamp(base + 1, 0, inLen - 1); frac[o] = src - float(base); } } @@ -215,7 +225,7 @@ static inline void buildCubicIndexAndWeights(std::vector>& ids { for (int k = -1; k <= 2; ++k) { - int idx = std::clamp(i + k, 0, inLen - 1); + int idx = clamp(i + k, 0, inLen - 1); ids[o][k+1] = idx; sw += weights[o][k+1]; }