From d8ec48722ae93e1ff48485e94eaf83339b7e7968 Mon Sep 17 00:00:00 2001 From: Mateusz Pusz Date: Wed, 6 May 2020 18:20:55 +0200 Subject: [PATCH] Template parameters constraints added for math.h --- src/include/units/math.h | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/src/include/units/math.h b/src/include/units/math.h index 497c4dbd..2d09be3f 100644 --- a/src/include/units/math.h +++ b/src/include/units/math.h @@ -30,13 +30,16 @@ namespace units { template -requires(N == 0) inline Rep pow(const quantity&) noexcept + requires(N == 0) +inline Rep pow(const quantity&) noexcept { return 1; } template + requires(N != 0) inline Quantity AUTO pow(const quantity& q) noexcept + requires requires { std::pow(q.count(), N); } { using dim = dimension_pow; using ratio = ratio_pow; @@ -46,6 +49,7 @@ inline Quantity AUTO pow(const quantity& q) noexcept template inline Quantity AUTO sqrt(const quantity& q) noexcept + requires requires { std::sqrt(q.count()); } { using dim = dimension_sqrt; using ratio = ratio_sqrt; @@ -55,11 +59,13 @@ inline Quantity AUTO sqrt(const quantity& q) noexcept template constexpr Quantity AUTO abs(const quantity& q) noexcept + requires requires { std::abs(q.count()); } { return quantity(std::abs(q.count())); } template + requires requires { std::numeric_limits::epsilon(); } constexpr Quantity AUTO epsilon() noexcept { return Q(std::numeric_limits::epsilon());