mirror of
https://github.com/mpusz/mp-units.git
synced 2025-08-04 04:44:27 +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)); }
|
||||
|
||||
// Implementation of implicit conversion to ratio goes here, because it needs `numerator()` and `denominator()`.
|
||||
template<BasePower auto... BPs>
|
||||
requires detail::is_base_power_pack_valid<BPs...>
|
||||
constexpr magnitude<BPs...>::operator ratio() const
|
||||
// Implementation of conversion to ratio goes here, because it needs `numerator()` and `denominator()`.
|
||||
constexpr ratio as_ratio(Magnitude auto m)
|
||||
{
|
||||
static_assert(is_rational(magnitude<BPs...>{}));
|
||||
static_assert(is_rational(m));
|
||||
|
||||
return ratio{
|
||||
get_value<std::intmax_t>(numerator(*this)),
|
||||
get_value<std::intmax_t>(denominator(*this)),
|
||||
get_value<std::intmax_t>(numerator(m)),
|
||||
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}>();
|
||||
}
|
||||
|
||||
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});
|
||||
}
|
||||
|
||||
|
Reference in New Issue
Block a user