From 8543ab65d19c7ed3d08573f012d14cb722536dda Mon Sep 17 00:00:00 2001 From: Mateusz Pusz Date: Sat, 19 Oct 2019 20:51:20 +0200 Subject: [PATCH] pow<0> support added --- src/include/units/math.h | 7 +++++++ test/unit_test/runtime/math_test.cpp | 2 +- test/unit_test/static/math_test.cpp | 1 + 3 files changed, 9 insertions(+), 1 deletion(-) diff --git a/src/include/units/math.h b/src/include/units/math.h index f9e0d289..3dd70d92 100644 --- a/src/include/units/math.h +++ b/src/include/units/math.h @@ -27,6 +27,13 @@ namespace units { + template + requires N == 0 + inline Rep AUTO pow(const quantity&) noexcept + { + return 1; + } + template inline Quantity AUTO pow(const quantity& q) noexcept { diff --git a/test/unit_test/runtime/math_test.cpp b/test/unit_test/runtime/math_test.cpp index 5491397b..4e72e26b 100644 --- a/test/unit_test/runtime/math_test.cpp +++ b/test/unit_test/runtime/math_test.cpp @@ -31,7 +31,7 @@ using namespace units; TEST_CASE("pow() on quantity changes the value and the dimension accordingly", "[math][pow]") { - // CHECK(pow<0>(2m) == 2); + CHECK(pow<0>(2m) == 1); CHECK(pow<1>(2m) == 2m); CHECK(pow<2>(2m) == 4sq_m); CHECK(pow<3>(2m) == 8cub_m); diff --git a/test/unit_test/static/math_test.cpp b/test/unit_test/static/math_test.cpp index 907a3da1..09a4759c 100644 --- a/test/unit_test/static/math_test.cpp +++ b/test/unit_test/static/math_test.cpp @@ -27,6 +27,7 @@ using namespace units; namespace { + static_assert(std::is_same_v(2m)), std::int64_t>); static_assert(std::is_same_v(2m)), decltype(2m)>); static_assert(std::is_same_v(2m)), decltype(4sq_m)>); static_assert(std::is_same_v);