From 06853b7aebc13b2d58bfafc00d5c92be75e0eeab Mon Sep 17 00:00:00 2001 From: Mateusz Pusz Date: Fri, 8 Nov 2024 12:57:29 +0100 Subject: [PATCH] fix: `const` was leaking to some `SymbolicConstant`s --- .../mp-units/framework/quantity_spec.h | 4 ++-- test/static/concepts_test.cpp | 24 +++++++++---------- test/static/unit_test.cpp | 12 +++++----- 3 files changed, 20 insertions(+), 20 deletions(-) diff --git a/src/core/include/mp-units/framework/quantity_spec.h b/src/core/include/mp-units/framework/quantity_spec.h index dd6c4785..725dc2c3 100644 --- a/src/core/include/mp-units/framework/quantity_spec.h +++ b/src/core/include/mp-units/framework/quantity_spec.h @@ -925,10 +925,10 @@ template return extract_results{false}; else if constexpr (from_exp > to_exp) return extract_results{true, from_factor, to_factor, prepend_rest::first, - power_or_T{}}; + power_or_T, from_exp - to_exp>{}}; else return extract_results{true, from_factor, to_factor, prepend_rest::second, - power_or_T{}}; + power_or_T, to_exp - from_exp>{}}; } } diff --git a/test/static/concepts_test.cpp b/test/static/concepts_test.cpp index 83ecfa0a..a1a71510 100644 --- a/test/static/concepts_test.cpp +++ b/test/static/concepts_test.cpp @@ -81,7 +81,7 @@ inline constexpr auto speed = isq::length / isq::time; static_assert(QuantitySpec); static_assert(QuantitySpec); static_assert(QuantitySpec); -static_assert(QuantitySpec)>); +static_assert(QuantitySpec>); static_assert(QuantitySpec); static_assert(QuantitySpec(isq::length))>); static_assert(QuantitySpec); @@ -93,7 +93,7 @@ static_assert(!QuantitySpec); static_assert(detail::NamedQuantitySpec); static_assert(detail::NamedQuantitySpec); static_assert(detail::NamedQuantitySpec); -static_assert(!detail::NamedQuantitySpec)>>); +static_assert(!detail::NamedQuantitySpec>); static_assert(!detail::NamedQuantitySpec); static_assert(!detail::NamedQuantitySpec(isq::length))>); static_assert(detail::NamedQuantitySpec); @@ -104,7 +104,7 @@ static_assert(!detail::NamedQuantitySpec); // DerivedQuantitySpec static_assert(!detail::DerivedQuantitySpec); static_assert(!detail::DerivedQuantitySpec); -static_assert(!detail::DerivedQuantitySpec)>); +static_assert(!detail::DerivedQuantitySpec>); static_assert(!detail::DerivedQuantitySpec); static_assert(detail::DerivedQuantitySpec); static_assert(detail::DerivedQuantitySpec(isq::length))>); @@ -116,7 +116,7 @@ static_assert(!detail::DerivedQuantitySpec); // QuantityKindSpec static_assert(!detail::QuantityKindSpec); static_assert(!detail::QuantityKindSpec); -static_assert(detail::QuantityKindSpec)>>); +static_assert(detail::QuantityKindSpec>); static_assert(!detail::QuantityKindSpec); static_assert(!detail::QuantityKindSpec); static_assert(!detail::QuantityKindSpec(isq::length))>); @@ -130,8 +130,8 @@ static_assert(!detail::QuantityKindSpec); // Unit static_assert(Unit); -static_assert(Unit); -static_assert(Unit)>); +static_assert(Unit>); +static_assert(Unit>); static_assert(Unit); static_assert(Unit); static_assert(Unit); @@ -156,8 +156,8 @@ static_assert(!Unit); // PrefixableUnit static_assert(PrefixableUnit); static_assert(PrefixableUnit); -static_assert(!PrefixableUnit); -static_assert(!PrefixableUnit)>); +static_assert(!PrefixableUnit>); +static_assert(!PrefixableUnit>); static_assert(!PrefixableUnit); static_assert(!PrefixableUnit); static_assert(!PrefixableUnit * si::second)>); @@ -181,8 +181,8 @@ static_assert(!PrefixableUnit); // AssociatedUnit static_assert(AssociatedUnit); static_assert(!AssociatedUnit); -static_assert(AssociatedUnit); -static_assert(AssociatedUnit)>); +static_assert(AssociatedUnit>); +static_assert(AssociatedUnit>); static_assert(AssociatedUnit); static_assert(AssociatedUnit); static_assert(AssociatedUnit * si::second)>); @@ -206,7 +206,7 @@ static_assert(!AssociatedUnit); // UnitOf static_assert(UnitOf); static_assert(UnitOf); -static_assert(UnitOf); +static_assert(UnitOf, isq::mass>); static_assert(UnitOf); static_assert(UnitOf); static_assert(UnitOf); @@ -227,7 +227,7 @@ static_assert(Reference); static_assert(Reference); static_assert(!Reference); static_assert(!Reference); -static_assert(!Reference)>); +static_assert(!Reference>); static_assert(!Reference); static_assert(!Reference); diff --git a/test/static/unit_test.cpp b/test/static/unit_test.cpp index dccd3a31..50b1cfca 100644 --- a/test/static/unit_test.cpp +++ b/test/static/unit_test.cpp @@ -89,11 +89,11 @@ inline constexpr struct speed_of_light_in_vacuum_ final : named_unit<"c", mag<29 static_assert(Unit); static_assert(Unit); static_assert(Unit); -static_assert(Unit); +static_assert(Unit>); static_assert(Unit); static_assert(Unit); static_assert(Unit); -static_assert(Unit)>); +static_assert(Unit>); static_assert(Unit); static_assert(Unit); static_assert(Unit * second)>); @@ -101,20 +101,20 @@ static_assert(Unit); static_assert(Unit); static_assert(Unit); static_assert(Unit); -static_assert(Unit); +static_assert(Unit>); static_assert(PrefixableUnit); static_assert(PrefixableUnit); static_assert(PrefixableUnit); static_assert(PrefixableUnit); static_assert(PrefixableUnit); -static_assert(!PrefixableUnit); +static_assert(!PrefixableUnit>); static_assert(!PrefixableUnit); -static_assert(!PrefixableUnit)>); +static_assert(!PrefixableUnit>); static_assert(!PrefixableUnit); static_assert(!PrefixableUnit); static_assert(!PrefixableUnit * second)>); -static_assert(!PrefixableUnit); +static_assert(!PrefixableUnit>); // named unit static_assert(is_of_type);