diff --git a/src/include/units/math.h b/src/include/units/math.h index 8672def6..3a93fe27 100644 --- a/src/include/units/math.h +++ b/src/include/units/math.h @@ -32,7 +32,7 @@ namespace units { { using dim = dimension_pow_t; using r = ratio_pow; - return quantity>, Rep>(std::pow(q.count(), N)); + return quantity>, Rep>(static_cast(std::pow(q.count(), N))); } template @@ -40,7 +40,7 @@ namespace units { { using dim = dimension_sqrt_t; using r = ratio_sqrt; - return quantity>, Rep>(std::sqrt(q.count())); + return quantity>, Rep>(static_cast(std::sqrt(q.count()))); } } // namespace units diff --git a/test/unit_test/test_quantity.cpp b/test/unit_test/test_quantity.cpp index 5ed81fd6..e7bd28d7 100644 --- a/test/unit_test/test_quantity.cpp +++ b/test/unit_test/test_quantity.cpp @@ -22,6 +22,8 @@ #include "units/dimensions/velocity.h" #include "units/dimensions/frequency.h" +#include "units/dimensions/area.h" +#include "units/math.h" #include #include @@ -130,8 +132,7 @@ namespace { static_assert([]() { quantity l1(1), l2(2); return l2 = l1; - }() - .count() == 1); + }().count() == 1); // static member functions @@ -281,4 +282,6 @@ namespace { static_assert(2kmph * 2h == 4km); static_assert(2km / 2kmph == 1h); + static_assert(std::is_same_v(2m)), decltype(4sq_m)>); + } // namespace