From 1be54cbc1dc4c1ad8694b965b658a63e17eda7af Mon Sep 17 00:00:00 2001 From: Mateusz Pusz Date: Sat, 16 Nov 2024 22:08:54 +0100 Subject: [PATCH] feat: `equivalent` now accept any units (even non-convertible) --- src/core/include/mp-units/framework/unit.h | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/src/core/include/mp-units/framework/unit.h b/src/core/include/mp-units/framework/unit.h index 8e598629..2be5cdb8 100644 --- a/src/core/include/mp-units/framework/unit.h +++ b/src/core/include/mp-units/framework/unit.h @@ -222,10 +222,15 @@ struct unit_interface { } template - requires(convertible(Lhs{}, Rhs{})) [[nodiscard]] friend consteval bool equivalent(Lhs lhs, Rhs rhs) { - return get_canonical_unit(lhs).mag == get_canonical_unit(rhs).mag; + if constexpr (is_same_v) + return true; + else { + const auto lhs_canonical = get_canonical_unit(lhs); + const auto rhs_canonical = get_canonical_unit(rhs); + return lhs_canonical.mag == rhs_canonical.mag && lhs_canonical.reference_unit == rhs_canonical.reference_unit; + } } };