refactor: constraints for common_unit improved

This commit is contained in:
Mateusz Pusz
2023-05-22 17:53:50 +02:00
parent 86e1f058e7
commit 26164edeac

View File

@@ -602,10 +602,10 @@ inline constexpr struct per_mille : named_unit<basic_symbol_text{"‰", "%o"}, m
} }
// Common unit // Common unit
[[nodiscard]] consteval auto common_unit(Unit auto u) { return u; } [[nodiscard]] consteval Unit auto common_unit(Unit auto u) { return u; }
template<Unit U1, Unit U2> template<Unit U1, Unit U2>
[[nodiscard]] consteval auto common_unit(U1 u1, U2 u2) [[nodiscard]] consteval Unit auto common_unit(U1 u1, U2 u2)
requires(detail::have_same_canonical_reference_unit(u1, u2)) requires(detail::have_same_canonical_reference_unit(u1, u2))
{ {
if constexpr (U1{} == U2{}) { if constexpr (U1{} == U2{}) {
@@ -628,7 +628,7 @@ template<Unit U1, Unit U2>
} }
} }
[[nodiscard]] consteval auto common_unit(Unit auto u1, Unit auto u2, Unit auto u3, Unit auto... rest) [[nodiscard]] consteval Unit auto common_unit(Unit auto u1, Unit auto u2, Unit auto u3, Unit auto... rest)
requires requires { common_unit(common_unit(u1, u2), u3, rest...); } requires requires { common_unit(common_unit(u1, u2), u3, rest...); }
{ {
return common_unit(common_unit(u1, u2), u3, rest...); return common_unit(common_unit(u1, u2), u3, rest...);