39 if constexpr (numeric_util::is_int_rangesafe<OutT, InT>())
41 return static_cast<OutT
>(inVal);
43 else if constexpr (numeric_util::is_int_u2s<OutT, InT>())
45 auto unsignedInVal =
static_cast<uintmax_t
>(inVal);
46 return static_cast<OutT
>(std::min(
static_cast<uintmax_t
>(std::numeric_limits<OutT>::max()), unsignedInVal));
48 else if constexpr (numeric_util::is_int_s2u<OutT, InT>())
50 auto lowerVal =
static_cast<uintmax_t
>(std::max(inVal, 0));
51 auto upperLimit =
static_cast<uintmax_t
>(std::numeric_limits<OutT>::max());
52 return static_cast<OutT
>(std::min(lowerVal, upperLimit));
56 auto outMin =
static_cast<InT
>(std::numeric_limits<OutT>::min());
57 auto outMax =
static_cast<InT
>(std::numeric_limits<OutT>::max());
58 return static_cast<OutT
>(std::clamp(inVal, outMin, outMax));