diff --git a/src/include/units/quantity.h b/src/include/units/quantity.h index e9768e87..4819bae9 100644 --- a/src/include/units/quantity.h +++ b/src/include/units/quantity.h @@ -89,6 +89,14 @@ namespace units { template struct quantity_cast_impl { template + requires treat_as_floating_point + static constexpr To cast(const Q& q) + { + return To(static_cast(static_cast(q.count()) * (static_cast(CR::num) / + static_cast(CR::den)))); + } + template + requires !treat_as_floating_point static constexpr To cast(const Q& q) { return To(static_cast(static_cast(q.count()) * static_cast(CR::num) / @@ -108,6 +116,13 @@ namespace units { template struct quantity_cast_impl { template + requires treat_as_floating_point + static constexpr To cast(const Q& q) + { + return To(static_cast(static_cast(q.count()) * (CRep{1} / static_cast(CR::den)))); + } + template + requires !treat_as_floating_point static constexpr To cast(const Q& q) { return To(static_cast(static_cast(q.count()) / static_cast(CR::den)));