Finish fleshing out make_ratio

This commit is contained in:
Chip Hogg
2021-12-29 21:21:58 -05:00
parent 8a1ed3adcb
commit c75eb02ea7
2 changed files with 53 additions and 4 deletions
+8 -4
View File
@@ -81,7 +81,7 @@ using prime_factorization_t = typename prime_factorization<N>::type;
} // namespace detail
template <std::intmax_t N, std::intmax_t D = 1>
auto make_ratio() {
constexpr auto make_ratio() {
return quotient_t<detail::prime_factorization_t<N>, detail::prime_factorization_t<D>>{};
}
@@ -95,10 +95,14 @@ struct pi {
template <BasePower... Bs>
struct magnitude {
bool operator==(magnitude) const { return true; }
template <Magnitude M>
constexpr bool operator==(M) const { return std::is_same_v<magnitude, M>; }
template <BasePower... OtherBs>
bool operator==(magnitude<OtherBs...>) const { return false; }
template <Magnitude M>
constexpr friend auto operator*(magnitude, M) { return product_t<magnitude, M>{}; }
template <Magnitude M>
constexpr friend auto operator/(magnitude, M) { return quotient_t<magnitude, M>{}; }
};
////////////////////////////////////////////////////////////////////////////////////////////////////