summaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
-rw-r--r--compat/util.hpp14
1 files changed, 12 insertions, 2 deletions
diff --git a/compat/util.hpp b/compat/util.hpp
index 20be92a4..abcc9ba2 100644
--- a/compat/util.hpp
+++ b/compat/util.hpp
@@ -23,8 +23,10 @@ void run_in_thread_async(QObject* obj, F&& fun)
QObject::connect(&src, &QObject::destroyed, obj, std::move(fun), Qt::AutoConnection);
}
-template<typename t, typename u, typename w>
-auto clamp(t val, u min, w max) -> decltype (val * min * max)
+namespace detail {
+
+template<typename t, typename u, typename w, typename n>
+inline auto clamp_(n val, n min, n max) -> n
{
if (val > max)
return max;
@@ -33,6 +35,14 @@ auto clamp(t val, u min, w max) -> decltype (val * min * max)
return val;
}
+}
+
+template<typename t, typename u, typename w>
+inline auto clamp(const t& val, const u& min, const w& max) -> decltype(val * min * max)
+{
+ return ::detail::clamp_<t, u, w, decltype(val * min * max)>(val, min, max);
+}
+
namespace detail {
template<typename t>