diff --git a/src/core/include/mp-units/unit.h b/src/core/include/mp-units/unit.h index 9996f7e4..12257032 100644 --- a/src/core/include/mp-units/unit.h +++ b/src/core/include/mp-units/unit.h @@ -436,7 +436,7 @@ template else if constexpr (detail::is_specialization_of_scaled_unit) return Lhs::mag * (Lhs::reference_unit / rhs); else if constexpr (detail::is_specialization_of_scaled_unit) - return Rhs::mag * (lhs / Rhs::reference_unit); + return mag<1> / Rhs::mag * (lhs / Rhs::reference_unit); else return detail::expr_divide(lhs, rhs); } diff --git a/test/unit_test/static/unit_test.cpp b/test/unit_test/static/unit_test.cpp index 25826862..5a689a97 100644 --- a/test/unit_test/static/unit_test.cpp +++ b/test/unit_test/static/unit_test.cpp @@ -457,6 +457,8 @@ static_assert(convertible(si::kilo, kilometre)); static_assert(convertible(mag<1000> * metre, si::kilo)); static_assert(convertible(mag<1000> * metre, kilometre)); +static_assert(mag<60> * metre / second == metre / (mag * second)); + static_assert(metre != kilometre); static_assert(convertible(metre, kilometre)); static_assert(mag<100> * metre != kilometre);