forked from mpusz/mp-units
fix: quantity_cast between different, equivalent dimensions
This commit is contained in:
committed by
Mateusz Pusz
parent
ba37c37abd
commit
98c15a2356
@@ -145,7 +145,7 @@ template<Dimension ToD, typename D, typename U, typename Rep>
|
||||
requires equivalent<ToD, D>
|
||||
[[nodiscard]] constexpr auto quantity_cast(const quantity<D, U, Rep>& q)
|
||||
{
|
||||
return quantity_cast<quantity<ToD, dimension_unit<ToD>, Rep>>(q);
|
||||
return quantity_cast<quantity<ToD, downcast_unit<ToD, U::ratio>, Rep>>(q);
|
||||
}
|
||||
|
||||
/**
|
||||
|
@@ -37,7 +37,11 @@
|
||||
namespace {
|
||||
|
||||
using namespace units;
|
||||
using namespace units::physical::si;
|
||||
namespace si = physical::si;
|
||||
using namespace si;
|
||||
using namespace unit_constants;
|
||||
|
||||
constexpr auto cgs_cm = cgs::unit_constants::cm;
|
||||
|
||||
|
||||
//////////////////////////////
|
||||
@@ -685,6 +689,8 @@ static_assert(quantity_cast<kilometre>(2000_q_m).count() == 2);
|
||||
static_assert(quantity_cast<int>(1.23_q_m).count() == 1);
|
||||
static_assert(quantity_cast<dim_speed, kilometre_per_hour>(2000.0_q_m / 3600.0_q_s).count() == 2);
|
||||
|
||||
static_assert(quantity_cast<dim_length>(1 * cgs_cm) == 1 * cm);
|
||||
|
||||
static_assert(is_same_v<decltype(quantity_cast<litre>(2_q_dm3)), volume<litre, std::int64_t>>);
|
||||
static_assert(!is_same_v<decltype(quantity_cast<litre>(2_q_dm3)), volume<cubic_decimetre, std::int64_t>>);
|
||||
|
||||
|
Reference in New Issue
Block a user