From 1e28c11cfcdd0453d84acb7670087111de2f53f7 Mon Sep 17 00:00:00 2001 From: Mateusz Pusz Date: Sun, 14 May 2023 12:43:26 +0200 Subject: [PATCH] refactor: `convertible_to(U1, U2)` renamed to `convertible(U1, U2)` --- src/core/include/mp_units/bits/value_cast.h | 2 +- src/core/include/mp_units/quantity.h | 11 +++-- src/core/include/mp_units/reference.h | 14 +++--- src/core/include/mp_units/system_reference.h | 2 +- src/core/include/mp_units/unit.h | 2 +- test/unit_test/static/unit_test.cpp | 50 ++++++++++---------- 6 files changed, 41 insertions(+), 40 deletions(-) diff --git a/src/core/include/mp_units/bits/value_cast.h b/src/core/include/mp_units/bits/value_cast.h index 0370cf10..be859808 100644 --- a/src/core/include/mp_units/bits/value_cast.h +++ b/src/core/include/mp_units/bits/value_cast.h @@ -44,7 +44,7 @@ class quantity; * @tparam ToU a unit to use for a target quantity */ template - requires(convertible_to(get_unit(R), ToU)) + requires(convertible(get_unit(R), ToU)) [[nodiscard]] constexpr Quantity auto value_cast(const quantity& q) { if constexpr (detail::is_specialization_of_reference> || diff --git a/src/core/include/mp_units/quantity.h b/src/core/include/mp_units/quantity.h index ee6dabf4..77170bb8 100644 --- a/src/core/include/mp_units/quantity.h +++ b/src/core/include/mp_units/quantity.h @@ -59,7 +59,7 @@ concept Harmonic = // exposition only template concept QuantityConvertibleTo = // exposition only Quantity && Quantity && implicitly_convertible(QFrom::quantity_spec, QTo::quantity_spec) && - convertible_to(QFrom::unit, QTo::unit) && requires(QFrom q) { detail::sudo_cast(q); } && + convertible(QFrom::unit, QTo::unit) && requires(QFrom q) { detail::sudo_cast(q); } && (treat_as_floating_point || (!treat_as_floating_point && Harmonic)); @@ -73,9 +73,11 @@ concept InvocableQuantities = typename Q2::rep> && requires { common_reference(Q1::reference, Q2::reference); } && std::constructible_from>, Q1> && + std::invoke_result_t>, + Q1> && std::constructible_from>, Q2>; + std::invoke_result_t>, + Q2>; template requires detail::InvocableQuantities @@ -523,7 +525,6 @@ public: template requires(!mp_units::Quantity) && (Q::dimension == mp_units::dimension_one) && (Q::unit == mp_units::one) && requires { typename common_type_t; } -struct common_type : common_type { -}; +struct common_type : common_type {}; } // namespace std diff --git a/src/core/include/mp_units/reference.h b/src/core/include/mp_units/reference.h index 400b855e..1cf8afec 100644 --- a/src/core/include/mp_units/reference.h +++ b/src/core/include/mp_units/reference.h @@ -73,7 +73,7 @@ struct reference { } template - [[nodiscard]] friend consteval reference operator*(reference, U2) + [[nodiscard]] friend consteval reference operator*(reference, U2) { return {}; } @@ -103,21 +103,21 @@ struct reference { } template - [[nodiscard]] friend consteval bool convertible_to(reference, reference) + [[nodiscard]] friend consteval bool convertible(reference, reference) { - return implicitly_convertible(Q, Q2) && convertible_to(U, U2); + return implicitly_convertible(Q, Q2) && convertible(U, U2); } template - [[nodiscard]] friend consteval bool convertible_to(reference, U2 u2) + [[nodiscard]] friend consteval bool convertible(reference, U2 u2) { - return implicitly_convertible(Q, get_quantity_spec(u2)) && convertible_to(U, u2); + return implicitly_convertible(Q, get_quantity_spec(u2)) && convertible(U, u2); } template - [[nodiscard]] friend consteval bool convertible_to(U1 u1, reference) + [[nodiscard]] friend consteval bool convertible(U1 u1, reference) { - return implicitly_convertible(get_quantity_spec(u1), Q) && convertible_to(u1, U); + return implicitly_convertible(get_quantity_spec(u1), Q) && convertible(u1, U); } }; diff --git a/src/core/include/mp_units/system_reference.h b/src/core/include/mp_units/system_reference.h index 3935c9e9..b2fb0e47 100644 --- a/src/core/include/mp_units/system_reference.h +++ b/src/core/include/mp_units/system_reference.h @@ -62,7 +62,7 @@ struct system_reference { static constexpr auto coherent_unit = CoU; template - requires(convertible_to(coherent_unit, U{})) + requires(convertible(coherent_unit, U{})) [[nodiscard]] constexpr reference operator[](U) const { return {}; diff --git a/src/core/include/mp_units/unit.h b/src/core/include/mp_units/unit.h index adc1b248..f9096b51 100644 --- a/src/core/include/mp_units/unit.h +++ b/src/core/include/mp_units/unit.h @@ -596,7 +596,7 @@ inline constexpr struct per_mille : named_unit); static_assert(is_of_type); static_assert(is_of_type); static_assert(get_canonical_unit(metre).mag == mag<1>); -static_assert(convertible_to(metre, metre)); -static_assert(!convertible_to(metre, second)); +static_assert(convertible(metre, metre)); +static_assert(!convertible(metre, second)); static_assert(metre == metre); static_assert(metre != second); static_assert(is_of_type); static_assert(is_of_type); static_assert(get_canonical_unit(degree_Celsius).mag == mag<1>); -static_assert(convertible_to(degree_Celsius, kelvin)); +static_assert(convertible(degree_Celsius, kelvin)); static_assert(degree_Celsius == kelvin); static_assert(is_of_type); @@ -146,28 +146,28 @@ static_assert(get_canonical_unit(radian).mag == mag<1>); static_assert(is_of_type); static_assert(is_of_type); static_assert(get_canonical_unit(degree).mag == mag_pi / mag<180>); -static_assert(convertible_to(radian, degree)); +static_assert(convertible(radian, degree)); static_assert(radian != degree); static_assert(is_of_type); static_assert(is_of_type); static_assert(get_canonical_unit(steradian).mag == mag<1>); -static_assert(convertible_to(radian, steradian)); // !!! -static_assert(radian == steradian); // !!! +static_assert(convertible(radian, steradian)); // !!! +static_assert(radian == steradian); // !!! static_assert(is_of_type); static_assert(is_of_type); static_assert(get_canonical_unit(minute).mag == mag<60>); -static_assert(convertible_to(minute, second)); +static_assert(convertible(minute, second)); static_assert(minute != second); static_assert(is_of_type); static_assert(is_of_type); static_assert(get_canonical_unit(hour).mag == mag<3600>); -static_assert(convertible_to(hour, second)); +static_assert(convertible(hour, second)); -static_assert(convertible_to(hour, minute)); -static_assert(convertible_to(hour, hour)); +static_assert(convertible(hour, minute)); +static_assert(convertible(hour, hour)); static_assert(hour != second); static_assert(hour != minute); static_assert(hour == hour); @@ -176,14 +176,14 @@ static_assert(is_of_type); static_assert( is_of_type>>>); static_assert(get_canonical_unit(newton).mag == mag<1000>); // !!! (because of kilogram) -static_assert(convertible_to(newton, newton)); +static_assert(convertible(newton, newton)); static_assert(newton == newton); static_assert(is_of_type); static_assert( is_of_type, per>>>); static_assert(get_canonical_unit(joule).mag == mag<1000>); // !!! (because of kilogram) -static_assert(convertible_to(joule, joule)); +static_assert(convertible(joule, joule)); static_assert(joule == joule); static_assert(joule != newton); @@ -194,8 +194,8 @@ static_assert(is_of_type); static_assert( is_of_type>>>); static_assert(get_canonical_unit(standard_gravity_unit).mag == mag); -static_assert(convertible_to(standard_gravity_unit, standard_gravity_unit)); -static_assert(convertible_to(standard_gravity_unit, metre / square)); +static_assert(convertible(standard_gravity_unit, standard_gravity_unit)); +static_assert(convertible(standard_gravity_unit, metre / square)); static_assert(standard_gravity_unit == standard_gravity_unit); static_assert(standard_gravity_unit != metre / square); // magnitude is different static_assert(standard_gravity_unit.symbol == "[g]"); @@ -204,7 +204,7 @@ static_assert(standard_gravity_unit.symbol == "[g]"); static_assert(is_of_type); static_assert(is_of_type); static_assert(get_canonical_unit(kilometre).mag == mag<1000>); -static_assert(convertible_to(kilometre, metre)); +static_assert(convertible(kilometre, metre)); static_assert(kilometre != metre); static_assert(kilometre.symbol == "km"); @@ -212,7 +212,7 @@ static_assert(is_of_type); static_assert(is_of_type, per>>>); static_assert(get_canonical_unit(kilojoule).mag == mag<1'000'000>); -static_assert(convertible_to(kilojoule, joule)); +static_assert(convertible(kilojoule, joule)); static_assert(kilojoule != joule); static_assert(kilojoule.symbol == "kJ"); @@ -442,30 +442,30 @@ static_assert(si::kilo * si::milli == si::deca * si::deci == kilometre); static_assert(mag<1000> * metre == si::kilo); static_assert(mag<1000> * metre == kilometre); -static_assert(convertible_to(si::kilo, kilometre)); -static_assert(convertible_to(mag<1000> * metre, si::kilo)); -static_assert(convertible_to(mag<1000> * metre, kilometre)); +static_assert(convertible(si::kilo, kilometre)); +static_assert(convertible(mag<1000> * metre, si::kilo)); +static_assert(convertible(mag<1000> * metre, kilometre)); static_assert(metre != kilometre); -static_assert(convertible_to(metre, kilometre)); +static_assert(convertible(metre, kilometre)); static_assert(mag<100> * metre != kilometre); -static_assert(convertible_to(mag<100> * metre, kilometre)); +static_assert(convertible(mag<100> * metre, kilometre)); static_assert(si::milli != kilometre); -static_assert(convertible_to(si::milli, kilometre)); +static_assert(convertible(si::milli, kilometre)); // comparisons of non-convertible units static_assert(metre != metre * metre); -static_assert(!convertible_to(metre, metre* metre)); +static_assert(!convertible(metre, metre* metre)); // one static_assert(is_of_type);