diff --git a/src/core/include/units/magnitude.h b/src/core/include/units/magnitude.h index 7656a348..fe814dd2 100644 --- a/src/core/include/units/magnitude.h +++ b/src/core/include/units/magnitude.h @@ -368,9 +368,6 @@ struct magnitude { // Whether this magnitude represents a rational number. friend constexpr bool is_rational(const magnitude&) { return (detail::is_rational(BPs) && ...); } - - // Implicit conversion to ratio. - constexpr explicit(false) operator ratio() const; }; // Implementation for Magnitude concept (below). @@ -395,7 +392,7 @@ template constexpr T get_value(const magnitude&) { // Force the expression to be evaluated in a constexpr context, to catch, e.g., overflow. - constexpr auto result = detail::checked_static_cast((detail::compute_base_power(BPs) * ... * 1)); + constexpr auto result = detail::checked_static_cast((detail::compute_base_power(BPs) * ... * T{1})); return result; } diff --git a/test/unit_test/runtime/magnitude_test.cpp b/test/unit_test/runtime/magnitude_test.cpp index 22a3dd4b..e5d46f26 100644 --- a/test/unit_test/runtime/magnitude_test.cpp +++ b/test/unit_test/runtime/magnitude_test.cpp @@ -383,12 +383,10 @@ TEST_CASE("Constructing ratio from rational magnitude") SECTION("Irrational magnitude does not convert to ratio") { // The following code should not compile. - // constexpr ratio radical = pow(as_magnitude<2>()); - // (void)radical; + // as_ratio(pow(as_magnitude<2>())); // The following code should not compile. - // constexpr ratio degrees_per_radian = as_magnitude<180>() / pi_to_the<1>(); - // (void)degrees_per_radian; + // as_ratio(as_magnitude<180>() / pi_to_the<1>()); } }