diff --git a/src/include/units/bits/common_quantity.h b/src/include/units/bits/common_quantity.h index 0a1b4da0..6e9c9640 100644 --- a/src/include/units/bits/common_quantity.h +++ b/src/include/units/bits/common_quantity.h @@ -64,3 +64,13 @@ template::type; } // namespace units + +namespace std { + +template + requires units::equivalent_dim +struct common_type { + using type = units::common_quantity; +}; + +} \ No newline at end of file diff --git a/test/unit_test/static/quantity_test.cpp b/test/unit_test/static/quantity_test.cpp index 9618b0f4..1c0e4cb4 100644 --- a/test/unit_test/static/quantity_test.cpp +++ b/test/unit_test/static/quantity_test.cpp @@ -25,6 +25,7 @@ #include "units/physical/si/frequency.h" #include "units/physical/si/speed.h" #include "units/physical/si/volume.h" +#include "units/physical/us/length.h" #include #include @@ -222,6 +223,15 @@ static_assert( static_assert(std::is_same_v, length>, length>); +// common_type + +using namespace units::physical::us::literals; + +static_assert(std::equality_comparable); +static_assert(std::equality_comparable_with); +static_assert(0q_m == 0q_ft_us); +static_assert(std::equality_comparable_with); + // quantity_cast static_assert(std::is_same_v, metre>>(2q_km))::unit, metre>);