mirror of
https://github.com/mpusz/mp-units.git
synced 2025-07-31 10:57:16 +02:00
fix: commutativity of a common_unit()
fixed
This commit is contained in:
@ -25,3 +25,16 @@ template<typename T>
|
||||
name.remove_suffix(suffix.size());
|
||||
return name;
|
||||
}
|
||||
|
||||
template<typename T1, typename T2>
|
||||
[[nodiscard]] consteval auto better_type_name(T1 v1, T2 v2)
|
||||
{
|
||||
if constexpr (type_name<T1>().size() < type_name<T2>().size())
|
||||
return v1;
|
||||
else if constexpr (type_name<T2>().size() < type_name<T1>().size())
|
||||
return v2;
|
||||
else if constexpr (type_name<T1>() < type_name<T2>())
|
||||
return v1;
|
||||
else
|
||||
return v2;
|
||||
}
|
||||
|
@ -629,8 +629,11 @@ template<Unit U1, Unit U2>
|
||||
if constexpr (U1{} == U2{}) {
|
||||
if constexpr (std::derived_from<U1, U2>)
|
||||
return u1;
|
||||
else
|
||||
else if constexpr (std::derived_from<U2, U1>)
|
||||
return u2;
|
||||
else
|
||||
// TODO Check if there is a better choice here
|
||||
return better_type_name(u1, u2);
|
||||
} else {
|
||||
constexpr auto canonical_lhs = detail::get_canonical_unit(U1{});
|
||||
constexpr auto canonical_rhs = detail::get_canonical_unit(U2{});
|
||||
|
Reference in New Issue
Block a user