forked from mpusz/mp-units
fix: improve downcast mode off
This commit is contained in:
@@ -427,11 +427,11 @@ static_assert(invalid_binary_operations<metre>);
|
||||
static_assert(is_same_v<decltype(1_q_m + 1_q_m), length<metre, std::int64_t>>);
|
||||
static_assert(is_same_v<decltype(1_q_m - 1_q_m), length<metre, std::int64_t>>);
|
||||
static_assert(is_same_v<decltype(1_q_m * 1), length<metre, std::int64_t>>);
|
||||
static_assert(is_same_v<decltype(1_q_m * quantity{1}), length<metre, std::int64_t>>);
|
||||
static_assert(compare<decltype(1_q_m * quantity{1}), length<metre, std::int64_t>>);
|
||||
static_assert(is_same_v<decltype(1 * 1_q_m), length<metre, std::int64_t>>);
|
||||
static_assert(is_same_v<decltype(quantity{1} * 1_q_m), length<metre, std::int64_t>>);
|
||||
static_assert(compare<decltype(quantity{1} * 1_q_m), length<metre, std::int64_t>>);
|
||||
static_assert(is_same_v<decltype(1_q_m / 1), length<metre, std::int64_t>>);
|
||||
static_assert(is_same_v<decltype(1_q_m / quantity{1}), length<metre, std::int64_t>>);
|
||||
static_assert(compare<decltype(1_q_m / quantity{1}), length<metre, std::int64_t>>);
|
||||
static_assert(is_same_v<decltype(1_q_m % 1), length<metre, std::int64_t>>);
|
||||
static_assert(is_same_v<decltype(1_q_m % quantity{1}), length<metre, std::int64_t>>);
|
||||
static_assert(is_same_v<decltype(1_q_m % 1_q_m), length<metre, std::int64_t>>);
|
||||
@@ -458,10 +458,10 @@ static_assert(is_same_v<decltype(1_q_m + 1._q_m), length<metre, long double>>);
|
||||
static_assert(is_same_v<decltype(1_q_m - 1._q_m), length<metre, long double>>);
|
||||
static_assert(is_same_v<decltype(1_q_m * 1.L), length<metre, long double>>); // TODO should we address fundamental types implicit truncating conversions with concepts?
|
||||
static_assert(is_same_v<decltype(1 * 1._q_m), length<metre, long double>>);
|
||||
static_assert(is_same_v<decltype(1_q_m * quantity{1.L}), length<metre, long double>>); // TODO should we address fundamental types implicit truncating conversions with concepts?
|
||||
static_assert(is_same_v<decltype(quantity{1} * 1._q_m), length<metre, long double>>);
|
||||
static_assert(compare<decltype(1_q_m * quantity{1.L}), length<metre, long double>>); // TODO should we address fundamental types implicit truncating conversions with concepts?
|
||||
static_assert(compare<decltype(quantity{1} * 1._q_m), length<metre, long double>>);
|
||||
static_assert(is_same_v<decltype(1_q_m / 1.L), length<metre, long double>>);
|
||||
static_assert(is_same_v<decltype(1_q_m / quantity{1.L}), length<metre, long double>>);
|
||||
static_assert(compare<decltype(1_q_m / quantity{1.L}), length<metre, long double>>);
|
||||
static_assert(compare<decltype(1_q_m * dimensionless<percent, long double>(1)), length<centimetre, long double>>);
|
||||
static_assert(compare<decltype(dimensionless<percent, std::int64_t>(1) * 1._q_m), length<centimetre, long double>>);
|
||||
static_assert(compare<decltype(1_q_m * 1._q_m), area<square_metre, long double>>);
|
||||
@@ -479,10 +479,10 @@ static_assert(is_same_v<decltype(1._q_m + 1_q_m), length<metre, long double>>);
|
||||
static_assert(is_same_v<decltype(1._q_m - 1_q_m), length<metre, long double>>);
|
||||
static_assert(is_same_v<decltype(1._q_m * 1), length<metre, long double>>);
|
||||
static_assert(is_same_v<decltype(1.L * 1_q_m), length<metre, long double>>);
|
||||
static_assert(is_same_v<decltype(1._q_m * quantity{1}), length<metre, long double>>);
|
||||
static_assert(is_same_v<decltype(quantity{1.L} * 1_q_m), length<metre, long double>>);
|
||||
static_assert(compare<decltype(1._q_m * quantity{1}), length<metre, long double>>);
|
||||
static_assert(compare<decltype(quantity{1.L} * 1_q_m), length<metre, long double>>);
|
||||
static_assert(is_same_v<decltype(1._q_m / 1), length<metre, long double>>);
|
||||
static_assert(is_same_v<decltype(1._q_m / quantity{1}), length<metre, long double>>);
|
||||
static_assert(compare<decltype(1._q_m / quantity{1}), length<metre, long double>>);
|
||||
static_assert(compare<decltype(1._q_m * dimensionless<percent, std::int64_t>(1)), length<centimetre, long double>>);
|
||||
static_assert(compare<decltype(dimensionless<percent, long double>(1) * 1_q_m), length<centimetre, long double>>);
|
||||
static_assert(compare<decltype(1._q_m / dimensionless<percent, std::int64_t>(1)), length<hectometre, long double>>);
|
||||
@@ -493,25 +493,25 @@ static_assert(compare<decltype(quantity{1.L} / 1_q_s), frequency<hertz, long dou
|
||||
static_assert(compare<decltype(dimensionless<percent, long double>(1) / 1_q_s), frequency<scaled_unit<ratio(1, 100), hertz>, long double>>);
|
||||
|
||||
// different units
|
||||
static_assert(is_same_v<decltype(1_q_m + 1_q_km), length<metre, std::int64_t>>);
|
||||
static_assert(is_same_v<decltype(1._q_m + 1_q_km), length<metre, long double>>);
|
||||
static_assert(is_same_v<decltype(1_q_m + 1._q_km), length<metre, long double>>);
|
||||
static_assert(is_same_v<decltype(1._q_m + 1._q_km), length<metre, long double>>);
|
||||
static_assert(compare<decltype(1_q_m + 1_q_km), length<metre, std::int64_t>>);
|
||||
static_assert(compare<decltype(1._q_m + 1_q_km), length<metre, long double>>);
|
||||
static_assert(compare<decltype(1_q_m + 1._q_km), length<metre, long double>>);
|
||||
static_assert(compare<decltype(1._q_m + 1._q_km), length<metre, long double>>);
|
||||
|
||||
static_assert(is_same_v<decltype(1_q_km + 1_q_m), length<metre, std::int64_t>>);
|
||||
static_assert(is_same_v<decltype(1._q_km + 1_q_m), length<metre, long double>>);
|
||||
static_assert(is_same_v<decltype(1_q_km + 1._q_m), length<metre, long double>>);
|
||||
static_assert(is_same_v<decltype(1._q_km + 1._q_m), length<metre, long double>>);
|
||||
static_assert(compare<decltype(1_q_km + 1_q_m), length<metre, std::int64_t>>);
|
||||
static_assert(compare<decltype(1._q_km + 1_q_m), length<metre, long double>>);
|
||||
static_assert(compare<decltype(1_q_km + 1._q_m), length<metre, long double>>);
|
||||
static_assert(compare<decltype(1._q_km + 1._q_m), length<metre, long double>>);
|
||||
|
||||
static_assert(is_same_v<decltype(1_q_m - 1_q_km), length<metre, std::int64_t>>);
|
||||
static_assert(is_same_v<decltype(1._q_m - 1_q_km), length<metre, long double>>);
|
||||
static_assert(is_same_v<decltype(1_q_m - 1._q_km), length<metre, long double>>);
|
||||
static_assert(is_same_v<decltype(1._q_m - 1._q_km), length<metre, long double>>);
|
||||
static_assert(compare<decltype(1_q_m - 1_q_km), length<metre, std::int64_t>>);
|
||||
static_assert(compare<decltype(1._q_m - 1_q_km), length<metre, long double>>);
|
||||
static_assert(compare<decltype(1_q_m - 1._q_km), length<metre, long double>>);
|
||||
static_assert(compare<decltype(1._q_m - 1._q_km), length<metre, long double>>);
|
||||
|
||||
static_assert(is_same_v<decltype(1_q_km - 1_q_m), length<metre, std::int64_t>>);
|
||||
static_assert(is_same_v<decltype(1._q_km - 1_q_m), length<metre, long double>>);
|
||||
static_assert(is_same_v<decltype(1_q_km - 1._q_m), length<metre, long double>>);
|
||||
static_assert(is_same_v<decltype(1._q_km - 1._q_m), length<metre, long double>>);
|
||||
static_assert(compare<decltype(1_q_km - 1_q_m), length<metre, std::int64_t>>);
|
||||
static_assert(compare<decltype(1._q_km - 1_q_m), length<metre, long double>>);
|
||||
static_assert(compare<decltype(1_q_km - 1._q_m), length<metre, long double>>);
|
||||
static_assert(compare<decltype(1._q_km - 1._q_m), length<metre, long double>>);
|
||||
|
||||
static_assert(is_same_v<decltype(1_q_m % 1_q_km), length<metre, std::int64_t>>);
|
||||
static_assert(is_same_v<decltype(1_q_km % 1_q_m), length<kilometre, std::int64_t>>);
|
||||
@@ -820,8 +820,8 @@ static_assert(is_same_v<decltype(1_q_mm + 1_q_km), length<scaled_unit<ratio(1, 1
|
||||
|
||||
#else
|
||||
|
||||
static_assert(is_same_v<decltype(10_q_m / 5_q_s), speed<metre_per_second, std::int64_t>>);
|
||||
static_assert(is_same_v<decltype(1_q_mm + 1_q_km), length<millimetre, std::int64_t>>);
|
||||
static_assert(compare<decltype(10_q_m / 5_q_s), speed<metre_per_second, std::int64_t>>);
|
||||
static_assert(compare<decltype(1_q_mm + 1_q_km), length<millimetre, std::int64_t>>);
|
||||
|
||||
#endif
|
||||
|
||||
@@ -835,17 +835,17 @@ constexpr auto quotient_remainder_theorem(auto q1, auto q2)
|
||||
return q;
|
||||
}
|
||||
|
||||
static_assert(same(quotient_remainder_theorem(3'000 * m, 400 * m), 3'000 * m));
|
||||
static_assert(same(quotient_remainder_theorem(3 * km, 400 * m), 3 * km));
|
||||
static_assert(same(quotient_remainder_theorem(3 * km, 2 * m), 3 * km));
|
||||
static_assert(same(quotient_remainder_theorem(3 * km, 400'000 * mm), 3 * km));
|
||||
static_assert(same(quotient_remainder_theorem(3 * km, 2'000 * mm), 3 * km));
|
||||
static_assert(same(quotient_remainder_theorem(3 * km, 400 * mm), 3 * km));
|
||||
static_assert(same(quotient_remainder_theorem(3 * km, 2 * mm), 3 * km));
|
||||
static_assert(comp(quotient_remainder_theorem(3'000 * m, 400 * m), 3'000 * m));
|
||||
static_assert(comp(quotient_remainder_theorem(3 * km, 400 * m), 3 * km));
|
||||
static_assert(comp(quotient_remainder_theorem(3 * km, 2 * m), 3 * km));
|
||||
static_assert(comp(quotient_remainder_theorem(3 * km, 400'000 * mm), 3 * km));
|
||||
static_assert(comp(quotient_remainder_theorem(3 * km, 2'000 * mm), 3 * km));
|
||||
static_assert(comp(quotient_remainder_theorem(3 * km, 400 * mm), 3 * km));
|
||||
static_assert(comp(quotient_remainder_theorem(3 * km, 2 * mm), 3 * km));
|
||||
static_assert(same(quotient_remainder_theorem(3'000 * m, 400), 3'000 * m));
|
||||
static_assert(same(quotient_remainder_theorem(3'000 * m, quantity(400)), 3'000 * m));
|
||||
static_assert(same(quotient_remainder_theorem(3 * km, quantity(400)), 3 * km));
|
||||
static_assert(same(quotient_remainder_theorem(3 * km, quantity(2)), 3 * km));
|
||||
static_assert(same(quotient_remainder_theorem(3 * km, dimensionless<scaled_unit<ratio(1, 1000), one>, int>(400)), 3 * km));
|
||||
static_assert(comp(quotient_remainder_theorem(3'000 * m, quantity(400)), 3'000 * m));
|
||||
static_assert(comp(quotient_remainder_theorem(3 * km, quantity(400)), 3 * km));
|
||||
static_assert(comp(quotient_remainder_theorem(3 * km, quantity(2)), 3 * km));
|
||||
static_assert(comp(quotient_remainder_theorem(3 * km, dimensionless<scaled_unit<ratio(1, 1000), one>, int>(400)), 3 * km));
|
||||
|
||||
} // namespace
|
||||
|
Reference in New Issue
Block a user