mirror of
https://github.com/mpusz/mp-units.git
synced 2025-08-04 12:54:25 +02:00
Give up on implicit conversion
I don't understand what MSVC is complaining about, and it may end up being easier to just make the conversion explicit.
This commit is contained in:
@@ -517,16 +517,14 @@ constexpr auto numerator(magnitude<BPs...>)
|
|||||||
|
|
||||||
constexpr auto denominator(Magnitude auto m) { return numerator(pow<-1>(m)); }
|
constexpr auto denominator(Magnitude auto m) { return numerator(pow<-1>(m)); }
|
||||||
|
|
||||||
// Implementation of implicit conversion to ratio goes here, because it needs `numerator()` and `denominator()`.
|
// Implementation of conversion to ratio goes here, because it needs `numerator()` and `denominator()`.
|
||||||
template<BasePower auto... BPs>
|
constexpr ratio as_ratio(Magnitude auto m)
|
||||||
requires detail::is_base_power_pack_valid<BPs...>
|
|
||||||
constexpr magnitude<BPs...>::operator ratio() const
|
|
||||||
{
|
{
|
||||||
static_assert(is_rational(magnitude<BPs...>{}));
|
static_assert(is_rational(m));
|
||||||
|
|
||||||
return ratio{
|
return ratio{
|
||||||
get_value<std::intmax_t>(numerator(*this)),
|
get_value<std::intmax_t>(numerator(m)),
|
||||||
get_value<std::intmax_t>(denominator(*this)),
|
get_value<std::intmax_t>(denominator(m)),
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@@ -374,9 +374,9 @@ TEST_CASE("Constructing ratio from rational magnitude")
|
|||||||
check_ratio_round_trip_is_identity<ratio{5, 8}>();
|
check_ratio_round_trip_is_identity<ratio{5, 8}>();
|
||||||
}
|
}
|
||||||
|
|
||||||
SECTION("Rational magnitude implicitly converts to ratio")
|
SECTION("Rational magnitude converts to ratio")
|
||||||
{
|
{
|
||||||
constexpr ratio r = as_magnitude<ratio{22, 7}>();
|
constexpr ratio r = as_ratio(as_magnitude<ratio{22, 7}>());
|
||||||
CHECK(r == ratio{22, 7});
|
CHECK(r == ratio{22, 7});
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Reference in New Issue
Block a user